2012-09-20 20 views
0

看來我的sidekiq客戶端中間件中的yield後面的代碼沒有執行。沒有例外被提出(我陷入了這種情況),所以我無法想象代碼是如何被跳過的(lambda裏面沒有任何返回)。誰能解釋爲什麼?這裏的中間件代碼:Sidekiq客戶端中間件缺少「後」代碼?

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:[email protected]:9725/', 
       :namespace => 'mynamespace' } 
    config.client_middleware do |chain| 
    chain.add SidekiqClientWorkless, :foo => 1, :bar => 2 
    end 
end 

回答

0

您是否嘗試過使用ensure按照從docs的例子嗎?

我真的不知道爲什麼它會被要求,但它似乎是...

相關問題