Адам Виггинс (Adam Wiggins) описывает интересное решение для выполнения задач (методов) приложения, которые должны исполняться периодически.
Например, если нужно раз в час обращаться к API удаленного сервиса или отправлять почтовое уведомление каждый вечер. Обычно для этого используется cron. Адам считает, что cron больше подходит для задач системного уровня, чем для уровня приложения.
В результате получился проект Clockwork.
every 1.hour, 'apis.poll' every 1.day, 'reports.email', :at => '00:00'
Задача будет передана в очередь. Да, очередь задач здесь обязательна, поскольку Clockwork никогда не выполняет задачи самостоятельно.
Clockwork может работать с любой очередью. Вот пример для Beantstalk+Stalker:
require 'stalker'
handler { |job| Stalker.enqueue(job) }
every 1.hour, 'apis.poll'
every 1.day, 'reports.email', :at => '00:00'
Ссылки и подробности:
Пример о Clockwork в приложения Sinatra/MongoDB и Beanstalk
Пример использования Clockwork в приложении на базе Rails 3.0b4/SQLite3 и Delayed Job
Все-таки связка whenever + Cron как-то понадежней выглядит.