Rails在特定时间段内执行Cron Job或Rake任务

我想在特定时间段内执行某项任务。 让我们说我想每半小时在早上6点到9点之间执行cronjob或一些rake任务。 所以脚本将执行6,6:30,7,7:30 ……并且最后是9。

你能不能给我一些建议,告诉我如何用Rails做到这一点。

不要告诉我安排6,6:30,7 ..时间段的个人任务。

ANS
我发现最简单的方法是每当gem使用并添加cronjob时间如下。

every '*/30 6-9 * * *' do runner "Model.method" end 

最简单的方法之一是通过随时调用的Ruby gem。 它为您提供了一个非常好的DSL(特定于域的语言),您可以使用它来完成您想要的任务。 我以前用它来进行服务器应用程序部署,它就像一个魅力!

这是Github上的gem存储库的链接:
https://github.com/javan/whenever

这里还有一个很棒的RailsCast,你可以看看如何在Rails中设置它: http ://railscasts.com/episodes/164-cron-in-ruby


你应该可以做这样的事情:

 every :day, :at => (6..8).to_a.map { |x| ["#{x}:00","#{x}:30", "#{x+1}:00"] }.flatten do # Run rake task. end # => ["6:00", "6:30", "7:00", "7:00", "7:30", "8:00", "8:00", "8:30", "9:00"] 

您可以调整初始范围和内部块以覆盖您想要的任何范围。 whenever方便地处理军事时间格式(24小时制),这都很好用。

希望有所帮助!

我喜欢将delayed_job用于计划任务 – https://github.com/collectiveidea/delayed_job

当您将作业置入时,可以指定run_at属性