Gem 求教一个 Whenever 时间条件的写法

hexawing · 2014年05月23日 · 最后由 hanluner 回复于 2014年05月23日 · 2408 次阅读

比如我想要它每双周周五的上午 10 点执行,是不是只能写成 every 2.weeks, :at => '10:00 am' do 然后在周五的时候把它加入时间表?似乎有点诡异的样子……

什么是双周,从哪算起?

结合下 date 判断单双周,再设置一个 job_typedate 判断添加到前面应该可以了。

job_type :even_week_runner,  "[ $(($(date +%W) % 2)) -eq 0 ] && cd :path && script/rails runner -e :environment ':task' :output"

every :friday, :at => '10:00 am' do
  even_week_runner "MyModel.some_process"
end
mac:SpecialBlog special$ bundle exec whenever

0 10 * * 5 /bin/bash -l -c '[ $(($(date +\%W) \% 2)) -eq 0 ] && cd /xxxxx && script/rails runner -e production '\''MyModel.some_process'\'''

#1 楼 @pynix 一般来说一年的 1 月 1 日所在的那周就是该年的第 1 周,然后按序号,单数叫单周双数叫双周…… #2 楼 @special 唔,似乎也只能这么办了,再判断一次……谢谢

双周概念比较模糊,其实不太好写,写个大概的意思

every "0 10 1-7,15-21 * 5"
或者
every "0 10 8-14,22-28 * 5"

这个也太简单了吧,时间 format 当中%U,代表是每年的第几周,你处理下偶数不就行了?

需要 登录 后方可回复, 如果你还没有账号请 注册新账号