前人未踏の領域へ WEB・インフラ・プログラミング全般編

フロントエンド、バックエンド、インフラ、言語など、アプリ開発、IOT以外の記録

Rails whenever指定方法あれこれ

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内でエスケープされてしまって実行エラーになる。。隔週ってどうやるんだろう。

参考

github.com stackoverflow.com

/* Responsive: yes */