Правильный способ использования событий, созданных с помощью Ice Cube в Rails, с использованием ежедневного задания cron

Я хочу создавать повторяющиеся события с помощью гема Ice Cube в Rails - мой вопрос в том, как мне затем правильно или, скорее, эффективно использовать эти повторяющиеся правила для запуска реальных событий?

Пример. из этого будет повторяющийся счет.

Скажем, у меня есть набор повторений Ice Cube один раз в неделю, и я сохранил его в строке повторяющегося счета с помощью to_yaml. Теперь у меня есть строка в базе данных с сериализованным правилом повторения. Единственный способ, который я могу себе представить, это использовать каждую строку в базе данных, десериализуя сохраненные правила повторения и проверяя, нужно ли его запускать сегодня с помощью schedule.occurs_on? (Date.new) - затем это будет помещено в cronjob, который выполняется ежедневно:

items = RecurringItem.find(:all)
items.each do |item|
    schedule = Schedule.from_yaml(item.schedule_yaml)
    if schedule.occurs_on?(Date.new)
        #if today is a recurrence, do stuff!
    end
end

Это кажется мне ужасно неэффективным, но я могу делать это совершенно неправильно. Нет лучшего способа использовать Ice Cube?

12
задан Constant Meiring 1 August 2011 в 18:25
поделиться