Wheneverとは
Rails上でcronによる定期実行バッチの処理時間を管理するためのライブラリ。crontabに記述する内容をruby言語で書ける
セットアップ
$ gem install whenever $ bundle exec wheneverize .
コマンド
用途 | コマンド |
---|---|
Cronを書き換えずに更新内容を確認する | $ bundle exec whenever |
Crontabを更新する | $ bundle exec whenever --update-crontab |
環境指定 | $ bundle exec whenever --set environment='development' |
設定ファイル(schedule.rb)
実行タイミング | 記述 | crontab |
---|---|---|
毎時10分 | every 1.hours, at: 10 |
10 * * * * |
毎日午前9時0分 | every 1.days, at: '9:00 am' |
0 9 * * * |
毎週月曜日 午前9時5分 | every :monday, at: '9:05 am' |
5 9 * * 1 |
独自のjob_typeを作る
job_type
とはcronが実行されるタイミングで呼ばれるコマンドのこと
通常は事前に定義されている job_type
を実行するが、自分で定義することもできる。
例えば隔週にしたいならこんな感じ。
job_type :biweekly_runner, '$(test $(expr $(date "+%W") % 2 ) -eq 0) && cd :path && bin/rails runner -e :environment ":task" :output'
のはずだったのだけど、%
がwhenever内でエスケープされてしまって実行エラーになる。。隔週ってどうやるんだろう。