8.2 コールバック
ジョブの実行前に処理を追加する
ActiveJobの以下のコールバックがあります。
コールバック | 説明 |
---|---|
before_enqueue | キューに登録される前 |
around_enqueue | キューに登録される時 |
after_enqueue | キューに登録された後 |
before_perform | 処理が実行される前 |
around_perform | 処理が実行される時 |
after_perform | 処理が実行された後 |
以下の例ではジョブの実行前にPost
のデータをCSVにエクスポートしています。
class PageviewCleanupJob < ApplicationJob
queue_as :default
before_perform do
posts = Post.all
export_to_csv(posts) # csvにエクスポート
end
def perform(*args)
# 実行したい処理を書く
Post.update_all(pageview: 0)
end
end
ジョブの実行後に処理を追加する
以下の例ではジョブの実行後に新しいジョブを登録しています。
class PageviewCleanupJob < ApplicationJob
queue_as :default
after_perform do
PageviewCleanupJob.set(wait: 1.week).perform_later # 新規にジョブを登録
end
def perform(*args)
# 実行したい処理を書く
Post.update_all(pageview: 0)
end
end