アカハヤのブログ

クズと天才は紙一重 twitter:@akahaya719

Rails Active Job

Active Jobは、

時間差で処理を実行できるようなものです。

 

Jobの作成方法は、以下のコマンドを実行

rails g job ジョブ名

 

以下のようなジョブができます

class ジョブ名 < ActiveJob::Base
queue_as :default

def perform(*args)
 # 実行したいことを書く
end
end

 

*argsの部分に自由に引数を入れられます。

 

Jobを呼び出す方法

一週間後に実行したい場合

ジョブ名.set(wait: 1.week).perform_later(*args)

 

すぐに呼び出したい場合

ジョブ名.perform_now(*args)

 

特定の時間に呼び出したい場合

now_time = Time.now.to_i (現在時刻)
release_time = リリースする日時と時間
wait_time = (release_time - now_time)
ジョブ名.set(wait: wait_time.seconds).perform_later(*args)

wait_time.secondsで差分を秒に変換してJobをセットしています。

他にも、Jobオプションは、いろいろあるので調べてみてください