Как запланировать выполнение функции в будущем? - PullRequest
0 голосов
/ 31 марта 2011

У меня есть приложение rails, в котором пользователь создает запись, называемую петухом, с логическим значением «on», установленным в true.В консоли rails это выглядит так:

Rooster 
=> Rooster{:id integer, :user_id integer, :created_at datetime, :updated_at datetime, :on boolean} 

Теперь, через некоторое время (скажем, 10 часов), мне нужно приложение, автоматически переключающее логическое значение на «false» (пользователь ничего не делает).

Довольно простая идея.Итак, как мне создать метод в рельсах 3, который выполняется по истечении некоторого периода времени?

Ответы [ 3 ]

2 голосов
/ 31 марта 2011

Вы захотите посмотреть либо DelayedJob , либо Resque .

1 голос
/ 22 апреля 2011

Взгляните на SimpleWorker, облачную фоновую обработку / рабочую очередь для приложений Ruby.

Предназначен для разгрузки внешних задач (отправка электронной почты, отправка сообщений в твиттер), выполнения запланированных заданий или масштабирования группы параллельных заданий (сканирование в Интернете, ruby ​​hadoop и т. Д.). Отлично подходит только для этого типа использования.

Задания выполняются в облаке, поэтому вы не только переносите задачи с серверов приложений, но и получаете надежность работы в облачной инфраструктуре (служба работает на AWS с использованием хранилищ постоянных данных и очередей сообщений).

(Раскрытие: я работаю на компанию.)

1 голос
/ 31 марта 2011

С DelayedJob вы можете сделать что-то вроде

  def in_the_future
   # Some other code
  end
  handle_asynchronously :in_the_future, :run_at => Proc.new { 10.hours.from_now }

Очень мило? :) Я предлагаю вам прочитать документацию, на которую ссылается Джаред

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...