У меня есть аналогичная настройка для пакетных заданий. Пользователь добавляет их на веб-панель управления, и они запускаются, как часто указывается.
Я использую active-record для хранения определений планирования, использую resque для выполнения и одну запись cron для постановки в очередь с помощью задачи rake.
так что тогда в грабли задача:
to_run = Report.daily
to_run += Report.weekly if Time.now.monday?
to_run += Report.monthly if Time.now.day == 1
to_run.each{|r| r.enqueue!}
, где ежедневно, еженедельно, ежемесячно указываются области действия модели:
class Report < ActiveRecord::Base
scope :daily, where(:when_to_run => 'daily')
scope :weekly, where(:when_to_run => 'weekly')
scope :monthly, where(:when_to_run => 'monthly')
end
Это немного глупо, но работает хорошо, и я хорошо остаюсь в стеке. Надеюсь, что это полезно