LoginSignup
1

More than 5 years have passed since last update.

Resqueスケジューラーで動的にargsを渡す方法

Last updated at Posted at 2013-02-28

需要があるかどうかもわからないし、他にやり方があるかもしれない

schedulerコンフィグにargsがHashになるよう設定する 

resque_scheduler.yml
sample_queue:
  every: 60s
  class: SampleQueue

  # Hashになるように設定する
  args:
    time: "this will be replaced"

before_delayed_enqueue フックでわたってきたHashを書き換える

class SampleQueue
  def self.before_delayed_enqueue(*args)
    # schedulerがenqueuする直前によばれ
    # argsにparseされたargsが配列でわたってくる    
    # おそらくこんな用途に使うものでないのか
    # 戻り値とか無視されるのでHashで渡すようして
    # そのHashの中身を上書き
    # ソース見る限りそれをそのまま渡してそう
    param = args.shift
    param["time"] = Time.now.to_i
  end

  def self.perform(params)
    time = params["time"]
  end
end

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1