【发布时间】:2010-07-15 20:38:48
【问题描述】:
有没有办法在 ROR 中设置一个在特定时间触发的回调?
假设我正在举办一场在特定时间到期的比赛。假设是 7 月 28 日星期一 9:00。我想设置一个在 7 月 28 日星期一 9:00 运行函数的观察者。 Rails 有办法做到这一点吗?
【问题讨论】:
标签: ruby-on-rails timer ruby-on-rails-3 observer-pattern
有没有办法在 ROR 中设置一个在特定时间触发的回调?
假设我正在举办一场在特定时间到期的比赛。假设是 7 月 28 日星期一 9:00。我想设置一个在 7 月 28 日星期一 9:00 运行函数的观察者。 Rails 有办法做到这一点吗?
【问题讨论】:
标签: ruby-on-rails timer ruby-on-rails-3 observer-pattern
Delayed Job 中有一个 run_at 字段。您必须让一个工作进程在后台始终运行并寻找一组要运行的作业,但如果您的应用程序经常这样做,这可能比总是编写新的 cron 作业更容易。
因此,您可以在 Contest 模型中拥有一个方法,该方法在 after_create 回调中被调用,该方法设置延迟作业以在指定日期向随机获胜者发送电子邮件。
不过,如果是一次性或非常罕见的交易,我会同意使用whenever
【讨论】:
您最好编写一个通过 crontab 在您需要的确切时间运行的 ruby 脚本。
【讨论】:
我同意 crontab,但我喜欢 whenever。它可以很好地集成到 cron 中,您可以将其存储在您的存储库中,并且可以很好地与 capistrano 集成。
【讨论】: