2012-12-20 80 views
2

當我上傳的Rails應用到的Heroku,我使用的Heroku記錄NoMethodError(未定義的方法`沖洗」的記錄器在Heroku的

NoMethodError (undefined method `flush' for #<Logger:0x00000005501680>): 
2012-12-20T16:20:42+00:00 app[web.1]: app/controllers/application_controller.rb:19:in `block in <class:ApplicationController>' 

正是因爲

rescue_from 'Exception' do |ex| 
    Rails.logger.fatal formatted_exception(ex) 
    Rails.logger.flush 

ApplicationController得到一個錯誤

如何修復它?

回答

3

Flush是一種在IO上定義的方法,其中f將緩衝的輸出推送到管道。

考慮到Heroku的多環境設置,它們可能有自己的IO管道實現,它們可能沒有定義flush。如果Flush沒有定義,那麼您不需要它就相當安全,並且在接收輸入時自動刷新。

如何

rescue_from 'Exception' do |ex| 
    Rails.logger.fatal formatted_exception(ex) 
    Rails.logger.flush if Rails.logger.respond_to? :flush 

附:

您可能不應該拯救例外:Why is it a bad style to `rescue Exception => e` in Ruby?

相關問題