Выполнение действия в Rails в определенное время - PullRequest
2 голосов
/ 16 июля 2010

Есть ли способ настроить обратный вызов в ROR, который будет запускаться в определенное время?

Допустим, я участвую в конкурсе, который заканчивается в определенное время. Скажем, понедельник 28 июля в 9:00. Я хотел бы назначить наблюдателя, который выполнял функцию в понедельник 28 июля в 9:00. У рельсов есть способ сделать это?

Ответы [ 3 ]

2 голосов
/ 16 июля 2010

В поле Задержка задания есть поле run_at. Вы должны иметь рабочий процесс в фоновом режиме, всегда работающий и ищущий задания, которые должны быть запущены, но если ваше приложение делает это много, это может быть проще, чем всегда писать новые задания cron.

Таким образом, у вас может быть метод в вашей модели Contest, который вызывается в обратном вызове after_create, который устанавливает отложенное задание для отправки электронного письма случайному победителю на указанную дату.

Если это разовая или очень редкая сделка, я соглашусь использовать всякий раз, когда

0 голосов
/ 16 июля 2010

Я согласен с crontab, но мне нравится всякий раз, когда .Он имеет приятную интеграцию с Cron, которую вы можете хранить в репо, и прекрасно интегрируется с Capistrano.

0 голосов
/ 16 июля 2010

Вам лучше написать скрипт ruby, который запускается через crontab именно в то время, когда вам это нужно.

...