如何安排任务(每当schedule.rb)在每个星期六运行?

时间:2018-04-10 09:00:59

标签: ruby-on-rails ruby cron whenever

尝试安排任务:

every '0 1 * * 6#2' do  
    rake 'prj:task1', output: 'log/task1.log'  
end  

观察错误:

gems/whenever-0.10.0/lib/whenever/cron.rb:154:in `parse_as_string': Couldn't parse: 0 1 8-14 (ArgumentError)

2 个答案:

答案 0 :(得分:0)

首先看一下服务器故障的答案:

Same question using only cron job

这应该是条目:

final CustomTableViewCell: UITableViewCell, UITextFieldDelegate {

  var player: Player!

  weak var textField: UITextField!

  func textFieldDidEndEditing(_ textField: UITextField) {

    player.name = textField.text
  }
}

第一部分是每个星期六上午8点,第二部分你可以在控制台上尝试这个测试:

0 8 * * 6 test $((10#$(date +\%W)\%2)) -eq 1 && yourCommand

这段代码的作用是获取一年中的星期数,如果是偶数或奇数则得到

如果我们将此翻译为ruby

test $((10#$(date +\%W)%2)) -eq 1 && echo odd || echo even

并在你的任务中添加执行测试条款,以便知道在这种情况下你在哪个星期六测试一年中的一周

every '0 8 * * 6' do
  rake 'prj:task1', output: 'log/task1.log' 
end

然后尝试根据自己的需要应用它 所以只能在一年中的偶数周或奇数周执行

Time.now.strftime('%W').to_i
 => 15 
Time.now.strftime('%W').to_i % 2
 => 1 

我不确定是否将if修饰符直接添加到shcedule将起作用

if  Time.now.strftime('%W').to_i % 2 == 1
  puts "odd do something" 
else
  puts "even do not do anything"
end

答案 1 :(得分:0)

另一个选项可以是found here

最终答案可能如下所示:

every '30 1 * * 6' do
  (($(date +'%V')&1)) && rake 'prj:task1', output: 'log/task1.log' 
end

这基本上每个星期六都有。但是第一次检查决定是否在偶数/奇数周运行。