delayed_job で遅延実行するジョブのデバッグはどうやるの?
発端
ログに以下のようにでてworkerは走っているようだが期待する結果が得られないときどこを確認するのか。
Job Delayed::PerformableMethod (id=24) RUNNING
確認方法
delayed_jobの設定を変更する。
config/initializer/delayed_job_config.rb
等:
Delayed::Worker.destroy_failed_jobs = false # 失敗したジョブをキューから消さない設定
Delayed::Worker.logger = Logger.new(File.join(Rails.root, 'log', 'delayed_job.log')) # ログファイル出力
railsを実行。
ワーカーを実行。
$ script/delayed_job start
railsを操作するなどしてジョブを投入。
ログを見て、失敗を確認したら、
$ cd rails_dir
$ rails c
Delayed::Job.all
Delayed::Job.last.last_error
エラーログが出ている。このログを参考にワーカーをデバッグ。