【发布时间】:2011-10-17 16:12:49
【问题描述】:
我想使用 Rails 中的 Ice Cube gem 创建重复事件 - 我的问题是,我如何正确地或更有效地使用这些重复规则来触发实际事件?
定期发票就是一个例子。
假设我将 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 的方法?
【问题讨论】:
-
尝试查看任何时候,它使用起来非常简单,而且效果很好。 github.com/javan/whenever
-
我不熟悉 Ice Cube,但我们确实在我的工作中经常使用 Resque Scheduler(双关语)。如果您想尝试一下并需要帮助,请给我发送电子邮件。
标签: ruby-on-rails recursion cron