Rails1.2.3 rescue_action_in_publicでエラーをうまく拾えない
ログファイル内のエラーログを監視するため、ページが見つからないエラー(404)のとき以外はログに"Application Error!"という文字列を出力したくて、AWDwRを参考にapplication.rbに
と書いてみたのですが、エラーをうまく拾えません。かわりに
def rescue_action_in_public(exception)
case exception
when ActionController::RoutingError, ActionController::UnknownAction, ActiveRecord::RecordNotFound
render :file=>"#{RAILS_ROOT}/public/404.html", :status=>'404 Not Found'
else
logger.error("Application Error!")
render :file=>"#{RAILS_ROOT}/public/500.html", :status=>'500 Error'
end
end
こんなエラーがでるようになりました。
NameError (uninitialized constant ApplicationController::RoutingError):
ネットを探し回ったところ、同じようなシチュエーションでの回答がこちらにありました。
Try ::ActionController::UnknownAction
そっけないお返事、と思いつつ以下のように修正。
無事エラーを拾えるようになりました。
def rescue_action_in_public(exception)
case exception
when ::ActionController::RoutingError, ::ActionController::UnknownAction, ::ActiveRecord::RecordNotFound
render :file=>"#{RAILS_ROOT}/public/404.html", :status=>'404 Not Found'
else
logger.error("Application Error!")
render :file=>"#{RAILS_ROOT}/public/500.html", :status=>'500 Error'
end
end
日進月歩のrails界なので、本に乗ってることが陳腐化することもそりゃありますよね。