delayed_job で登録したやつを変えたいとき
非同期処理とかで使われる delayed_job で登録しているキューの内容を変えたい時 (元を削除して、登録し直してもヨサソウだけど)
# job 登録 job_id = Notifier.delay(run_at: 2.hours.from_now).some_method(first_args, second_args) # 取り出す job = Delayed::Backend::ActiveRecord::Job.find(job_id) # yamlパース handler = YAML.load(job.handler) # some_method の first_args の値を変更 handler.args[0] = 'hogehoge' # 更新 job.update!(handler: handler.to_yaml, run_at: TEKITO_TIME)
handler カラムの中に yaml 形式でいろいろ情報があるっぽいので、これを更新してやればおっけー。
新しいプロジェクトとかだと delayed_job 使わないかもですが、データストアも MySQL だけで済むので管理しやすくていいなぁ個人的には思いますー。
Active Jobと連携して使うと Sidekiq、 Resque の切替も意識しなくて済むのヨサソウ。
ちなみに、 Faktory ってのが次世代らしい。