我使用exception_notification gem 来处理应用程序中的错误。我的ApplicationController看起来像这样:
unless Rails.application.config.consider_all_requests_local
rescue_from Exception,
:with => :render_error
rescue_from ActiveRecord::RecordNotFound,
:with => :render_not_found
rescue_from ActionController::RoutingError,
:with => :render_not_found
rescue_from ActionController::UnknownController,
:with => :render_not_found
rescue_from ActionController::UnknownAction,
:with => :render_not_found
end
def render_not_found(exception)
ExceptionNotifier::Notifier
.exception_notification(request.env, exception)
.deliver
render :template => "/errors/404.html.erb",
:layout => 'errors.html.erb'
return
end
def render_error(exception)
ExceptionNotifier::Notifier
.exception_notification(request.env, exception)
.deliver
render :template => "/errors/500.html.erb",
:layout => 'errors.html.erb'
return
end
在文件末尾的/config/enviroments/productions.rg中,我有:
config.middleware.use ExceptionNotifier,
:email_prefix => "[MY APP| Error Report] ",
:sender_address => %{"MY APP" <err@my-app.com>},
:exception_recipients => 'my_email@gmail.com'
end
当我在应用程序上收到错误时 - 例如。Article.find(not-existing-ID)
,我将从/public/500.html
应用程序控制器中指定的文件而不是从应用程序控制器中指定的文件中获取标准错误页面(ERROR 500)...这怎么可能?过去几个小时我试图找到问题,但我仍然不知道问题所在。