在Rails中安排一次性工作

时间:2014-07-03 01:15:29

标签: ruby-on-rails ruby ruby-on-rails-4 cron

我需要在rails中安排一个作业,其中一个方法将调用模型。我知道有几个基于cron的宝石,但这些都是为了重复工作,因为我需要在设定的时间只执行一次工作。有没有宝石可以做到这一点?

2 个答案:

答案 0 :(得分:2)

Rails 4.2将具有用于调度作业的Active Job框架。您可以在Rails 4.1中使用Active Job gem。它可作为多个排队系统的标准化包装器,包括Sidekiq和Resque(两者都需要Redis来处理延迟的作业)。使用活动作业可以在必要时灵活地交换排队系统。

您可以使用Active Job安排作业:

MyJob.enqueue_at(5.hours.from_now, record)

Rails维护者打算将其作为调度作业的标准机制。

查看rails-mailinglist-signup示例应用程序,了解如何使用Active Job。

答案 1 :(得分:0)

如果部署到Heroku,则会有一个调度程序加载项。

否则,您可以使用Sidekiq + Sidetiq来完成您的目标。