Help us understand the problem. What is going on with this article?

未来に登録したActiveJob実行をCancelする方法

More than 5 years have passed since last update.

RailsのActiveJobで未来に登録したJob実行をキャンセルしたい。
ActiveJobの標準的な機能としてサポートされているかと思ったのですが、そんなことなかった。

今回はジョブ実行にSidekiqを使っているとし、キャンセルにはSidekiqのAPIを使います。

job = MyJob.set(wait_until: Date.tomorrow.noon).perform_later(record)
job.job_id # これがjobを特定するid

require 'sidekiq/api' # 実際はinitializers/sidekiq.rbに入れるかも

ss = Sidekiq::ScheduledSet.new # スケジュールされたジョブの一覧を取得
ss.find { |job| job.args[0]['job_id'] == job.job_id}.delete

参考

Sidekiq Wiki API https://github.com/mperham/sidekiq/wiki/API

kazasiki
IT企業に務めるプログラマ。ITとゲームとハードコアテクノをこよなく愛してます。クラブによく出没します。Youtube等でゲーム実況してます。IT系の勉強会とかよく行きます。 Ruby/C/C++/Python/Go/機械学習/Rails
http://kazasikipg.hatenablog.com/
persol
PERSOL(パーソル)グループは、人材派遣、人材紹介、求人広告をはじめとし、ITアウトソーシング、設計開発にいたるまで、国内外70社を超える幅広い企業群で構成されています。
https://www.persol-group.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away