Ruby
Rails
whenever

wheneverを使ってcrontabにrakeタスクを設定する時に--silentオプションを外す方法

More than 1 year has passed since last update.

wheneverとはcrontabを管理するためのgemです。
インストール方法についてはwheneverのリポジトリを参照ください。

silentオプションを外すと何がうれしいの?

cronの実行ログを書き込みたい場合に捗ります。
rakeの--silentオプションが設定されていると標準出力にログメッセージ及びディレクトリが表示されなくなるため、ログに書き込まれない(未検証だが標準出力エラーは書き込まれるかも)

本題

rake用のjob_typeから--silentオプションを省いて再定義することによって解決しました。
実はこちらもwheneverリポジトリのREADMEにjob_typeのデフォルト定義と変更方法が書いてありました。

job_type :rake, "cd :path && :environment_variable=:environment bundle exec rake :task --silent :output"

設定

schedule.rbへrake用job_typeを--silentオプションを外して再定義すれば完了です。

schedule.rb
set :output, '/var/log/cron.log'

# rake用job_typeの再定義
job_type :rake, 'cd :path && :environment_variable=:environment bundle exec rake :task :output'

every '0 7 * * *', roles: [:batch] do
   rake 'item:update'
end

設定内容の確認

0 7 * * * /bin/bash -l -c 'cd /hoge/fuga && RAILS_ENV=development bundle exec rake item:update >> /var/log/cron.log 2>&1'

まとめ

job_typeの定義を変更することで--silentオプションの解除に限らず色々工夫が出来そうです。