0

Rails 3.2 アプリで Resque をセットアップし、正常に呼び出すアフター フックを用意しました。

Resque.enqueue(SomeJob, self.class.name, id)

ジョブが起動されているのがわかりますが、SomeJob クラスのメソッドが実行されていません。SomeJob が実行されることを確認するロガーをセットアップしましたが、self.perform ブロック内のログ ステートメントは呼び出されません。

def self.perform
  log.debug("working")
end

これまでのところ、self.work、work、self.perform、perform という名前のメソッドを試しましたが、何も呼び出されないようです。Resque のドキュメントは、保留中の 2.0.0 リリースに向けて調整されているようですが、1.24.1 または 1.22 でもこれを機能させることはできません。

Resque で呼び出される魔法のメソッドは何ですか? Resque.enqueueで明示的に呼び出す方法はありますか?

4

1 に答える 1

0

一見、2 つの引数 (self.class.nameid) を渡しているように見えますが、self.perform メソッドはそれらを受け入れることができないため、無効な引数エラーで暗黙のうちに失敗する可能性があります。

私の提案は、 self.perform メソッドを次のように変更することです。

def self.perform(class_name, id)
  log.debug("working: class_name=#{class_name} id=#{id}")
end
于 2013-05-18T16:33:44.080 に答える