0

yieldsidekiq クライアント ミドルウェアのコード AFTER が実行されていないようです。例外は発生しませんでした(私はそれをトラップしています)ので、コードがどのようにスキップされているか想像できません(ラムダ内でも戻りません)。誰でも理由を説明できますか?ミドルウェア コードは次のとおりです。

class SidekiqClientWorkless
  def initialize(options = nil)
  end
  def call(worker, msg, queue)
    Log.create!(task: "testing", message: "This message gets logged")
    begin
      yield
    rescue Exception => e
      require 'ruby-debug'
      debugger
    end
    Log.create!(task: "testing", message: "This message does not get logged")
  end
end

Sidekiq.configure_client do |config|
  config.redis = { :url => 'redis://user:pwd@barb.redistogo.com:9725/', 
                :namespace => 'mynamespace' }
  config.client_middleware do |chain|
    chain.add SidekiqClientWorkless, :foo => 1, :bar => 2
  end
end
4

1 に答える 1

0

ドキュメントensureの例に従って使用してみましたか?

正直なところ、なぜそれが必要なのかはわかりませんが、そう思われます...

于 2012-11-27T19:46:08.727 に答える