在特定时间在Rails中执行操作

时间:2010-07-15 20:38:48

标签: ruby-on-rails timer ruby-on-rails-3 observer-pattern

有没有办法在ROR中设置一个在特定时间触发的回调?

让我们说我正在举办一场在某个时间过期的比赛。让我们说7月28日星期一9点。我想在7月28日星期一上午9点​​设立一个观察员。 rails有办法吗?

3 个答案:

答案 0 :(得分:2)

Delayed Job中有一个run_at字段。您必须在后台始终运行一个工作进程并查找要运行的作业,但如果您的应用程序正在执行此操作,则可能比始终编写新的cron作业更容易。

因此,您可以在Contest模型中调用一个方法,该方法在after_create回调中调用,该方法设置延迟作业,以便在指定日期向随机获胜者发送电子邮件。

如果这是一次或非常罕见的交易,我会同意使用whenever

答案 1 :(得分:0)

你最好在你需要的时候编写一个通过crontab运行的ruby脚本。

答案 2 :(得分:0)

我同意crontab,但我喜欢whenever。它与cron有很好的集成,你可以用你的repo存储它,它与capistrano很好地集成。