每当gem出现Rails:两次调度任务?

时间:2015-07-15 02:12:08

标签: ruby-on-rails cron whenever

假设我想每天两次每隔x分钟运行一次耙子?我怎么能这样做?工作之间会吗?还是直到?或者我必须使用cron语法吗?

# Refresh daily scores
every 5.minutes, # :between '3pm' :and '1am' do ?
  rake "games:scores_refresh"
end

1 个答案:

答案 0 :(得分:3)

我不认为两者之间的选项可用,但你可以传递确切的时间或日期等语法可用作例子:

https://github.com/javan/whenever

对于你的任务可能是你可以通过一系列的时间:

every :day, :at => (1..15).to_a.map{ |x| (0..55).step(5).to_a.map{ |a| ["#{x}:#{a}"] } }.flatten do
  # Run rake task.
end

# => ["1:0", "1:5", "1:10", "1:15", "1:20", "1:25", "1:30", "1:35", "1:40", "1:45", "1:50", "1:55", "2:0", "2:5", "2:10", "2:15", "2:20", "2:25", "2:30", "2:35", "2:40", "2:45", "2:50", "2:55", "3:0", "3:5", "3:10", "3:15", "3:20", "3:25", "3:30", "3:35", "3:40", "3:45", "3:50", "3:55", "4:0", "4:5", "4:10", "4:15", "4:20", "4:25", "4:30", "4:35", "4:40", "4:45", "4:50"...]

这只是一个例子。你可以按照自己的意愿制作它。我不确定whenever是否接受24小时格式的时间。所以请检查出来并尝试这样。

更新1:

正在做更多的R& D并发现以上是宝石创建者所表示的问题的解决方案。这是链接:

https://github.com/javan/whenever/issues/506

没有知道可以在上面添加的rjust。关于AM& PM我认为你需要添加(不确定)。如果需要添加,请将其分为两部分。一个用于AM,另一个用于PM。

更新2:

我找到的另一个简单的解决方案是:

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

上述情况每隔30分钟在6到9之间运行。

来源:

Rails Execute Cron Job or Rake task for specific time period

希望这有帮助。