Rails でバックグラウンド処理を書く時、すぐ実行するだけでなく「あとで実行したい」「優先度を分けたい」という場面が出てきます。
その基本になるのが Active Job の wait と queue_as です。
目次
wait で遅延実行する
一定時間後に実行したい時は set(wait:) を使います。
GuestsCleanupJob.set(wait: 1.week).perform_later(guest)
特定の日時で実行したい時は wait_until も使えます。
GuestsCleanupJob.set(wait_until: Date.tomorrow.noon).perform_later(guest)
queue_as でキューを分ける
ジョブ側で既定キューを分けるなら queue_as を使います。
class GuestsCleanupJob < ApplicationJob
queue_as :low_priority
end
呼び出し時に上書きする
一時的に別キューへ流したい時は set(queue: …) で指定できます。
MyJob.set(queue: :another_queue).perform_later(record)
まとめ
Rails でジョブ処理を書くなら、wait と queue_as は早めに覚えておくと便利です。
遅延実行とキュー分離ができるだけで、運用の幅がかなり広がります。
