如何在rails中创建延迟作业以一年间隔运行?

时间:2014-08-25 11:04:46

标签: ruby-on-rails scheduled-tasks delayed-job

我想创建一个延迟工作,这个工作将在一年间隔后连续运行?那是每年的特定日期。如何使用延迟工作实现这一目标?

3 个答案:

答案 0 :(得分:1)

使用whenever gemHere是一个很好的screenacast

答案 1 :(得分:0)

使用delay-jobs gem,以便您可以按以下方式添加作为参数运行的时间:

Notifier.delay(run_at: 1.years.from_now).signup(@user)

请参阅RailsCasts for delay-jobs

要将此代码作为日常任务运行,您需要阅读Resque gemresque-scheduler gem,并查看helpful question

答案 2 :(得分:0)

我个人喜欢rufus-scheduler。从文档中,您可以通过多种方式安排任务:

require 'rufus-scheduler'

scheduler = Rufus::Scheduler.new

# ...

scheduler.in '10d' do
  # do something in 10 days
end

scheduler.at '2030/12/12 23:30:00' do
  # do something at a given point in time
end

scheduler.every '3h' do
  # do something every 3 hours
end

scheduler.cron '5 0 * * *' do
  # do something every day, five minutes after midnight
  # (see "man 5 crontab" in your terminal)
end

另外,请注意,如果您终止了应用程序,它将会丢失计划,因此建议将信息保存在数据库中并在启动时检索它。