2

RailsアプリをHerokuにアップロードすると、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

どうすれば修正できますか?

4

1 に答える 1

4

フラッシュはIOで定義されたメソッドで、バッファリングされた出力をパイプにフラッシュします。

Herokuのマルチ環境設定を考えると、おそらく、フラッシュが定義されていない可能性のあるIOパイプの独自の実装があります。フラッシュが定義されていない場合、それはあなたがそれを必要としないかなり安全な賭けであり、入力を受け取ると自動的にフラッシュします。

どうですか

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

PS

おそらく例外を救うべきではありません:Rubyで「例外を救う=> e」するのはなぜ悪いスタイルなのですか?

于 2012-12-20T17:17:25.967 に答える