1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

おそらくハマって困ってしまうであろうresqueの罠

Last updated at Posted at 2016-06-15

resque/resque: Resque is a Redis-backed Ruby library for creating background jobs, placing them on multiple queues, and processing them later.

を使用している。ハマりまくっているので、メモである。

ワーカーのエラー内容がわからない!!

VVERBOSE=1 bundle exec rake environment resque:work
のようにVVERBOSEを指定するとエラーが表示される。

オブジェクトの様子とか見たい!!

RubyMineのブレイクポイントが効かないので、オブジェクトの様子が見れない!! こまった。 pメソッドではコンソールに表示してくれない!!!

# config/initializers/resque.rb
Resque.logger = Logger.new(Rails.root.join('log', "#{Rails.env}_resque.log"))

を設定して、

Resque.logger.info('hoge')

のようにロガーでファイルに出すしかない。

ワーカークラスへの変更が適応されてない!!!

クラスを書き換えたら都度、Ctr + Cで一回止めて、
VVERBOSE=1 bundle exec rake environment resque:work
を入力!! してもっかい起動(´・ω・`)

効率的な方法が知りたい

引数にHashを渡すとキーがSymbolではなくてStringになっている

通常のRubyの例

def bar(param_hash)
  puts param_hash.keys.first.class #=> Symbol
  puts param_hash[:hoge]           #=> 1
  puts param_hash['hoge']          #=> なにも表示されない
end

bar(hoge: 1)

resqueの場合

class BarWorker
  @queue = :bar

  def self.perform(param_hash)
    Resque.logger.info('start')
    Resque.logger.info(param_hash.keys.first.class) #=> String
    Resque.logger.info(param_hash[:hoge])           #=> なにも表示されない
    Resque.logger.info(param_hash['hoge'])          #=> 1
    Resque.logger.info('end')
 end
end

Resque.enqueue(BarWorker, hoge: 1)
1
1
2

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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?