【问题标题】:Performing an action in Rails at a specific time在特定时间在 Rails 中执行操作
【发布时间】: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


    【解决方案1】:

    Delayed Job 中有一个 run_at 字段。您必须让一个工作进程在后台始终运行并寻找一组要运行的作业,但如果您的应用程序经常这样做,这可能比总是编写新的 cron 作业更容易。

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

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

    【讨论】:

    • 这会发生很多,所以我认为延迟作业可能是最好的,谢谢。
    【解决方案2】:

    您最好编写一个通过 crontab 在您需要的确切时间运行的 ruby​​ 脚本。

    【讨论】:

      【解决方案3】:

      我同意 crontab,但我喜欢 whenever。它可以很好地集成到 cron 中,您可以将其存储在您的存储库中,并且可以很好地与 capistrano 集成。

      【讨论】:

        猜你喜欢
        • 2014-08-06
        • 2015-11-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-15
        相关资源
        最近更新 更多