8.1 ジョブの作成

ジョブを登録する

ActiveJobはバックグラウンドでジョブを実行するための機能です。バッチ処理や、遅延処理などで使用します。 ActiveJobにはジェネレータが用意されているのでRailsの他のジェネレータ同様コマンドラインで作成することができます。

$ rails g job pageview_cleanup

コマンド実行すると以下のジョブが作成されています。以下の例ではPostpageviewをリセットしています。

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ではSidekiqResqueDelayed Jobなどのキューイングバックエンドに接続できます。

config/application.rb

class Application < Rails::Application
  config.active_job.queue_adapter = :delayed_job
end

results matching ""

    No results matching ""