8.1 ジョブの作成
ジョブを登録する
ActiveJobはバックグラウンドでジョブを実行するための機能です。バッチ処理や、遅延処理などで使用します。 ActiveJobにはジェネレータが用意されているのでRailsの他のジェネレータ同様コマンドラインで作成することができます。
$ rails g job pageview_cleanup
コマンド実行すると以下のジョブが作成されています。以下の例ではPost
のpageview
をリセットしています。
app/jobs/pageview_cleanup_job.rb
class PageviewCleanupJob < ApplicationJob
queue_as :default
def perform(*args)
# 実行したい処理を書く
Post.update_all(pageview: 0)
end
end
ジョブを登録するには任意の場所でPageviewCleanupJob
を呼び出します。
PageviewCleanupJob.perform_later # キューが開いたら自動で実行される
ジョブの実行タイミングを指定する
ジョブは好きなタイミングで実行されるようにキューに登録できます。set
メソッド使って任意のタイミングで実行されるように登録できます。
1週間後に実行
PageviewCleanupJob.set(wait: 1.week).perform_later
ジョブのバックエンドを変更する
ActiveJobではSidekiq
、Resque
、Delayed Job
などのキューイングバックエンドに接続できます。
config/application.rb
class Application < Rails::Application
config.active_job.queue_adapter = :delayed_job
end