我第一次尝试使用exception_notification。我观看了Railscast并遵循了作者在http://smartinez87.github.io/exception_notification/中的说明。一切似乎在某些例外情况下工作正常,但与其他情况不同。
我测试并收到了来自我的开发环境的电子邮件错误通知,其中包含"An ActionView::Template::Error occurred in static_pages#home:
“等错误。但是,有一些例外情况,例如RoutingException
和RecordNotFound
未被捕获ExceptionNotification,我不知道为什么,因为我的application_controller中没有任何rescue_from策略。
我正在使用rails 3.2.12并检查了中间件堆栈数组,我可以看到ExceptionNotification只是最后一个,并且看起来某种异常不会在堆栈中出现,所以Exception Notification是不知道他们。
所以,问题是:我做错了什么? ActionController::RoutingError
或ActiveRecord::RecordNotFound
之间的差异是什么,ExceptionNotification和ActionView::Template::Error
未被捕获并导致异常通知将通知电子邮件发送到我的收件箱。
提前致谢
答案 0 :(得分:7)
这些异常类型将被忽略,作为该gem的默认配置的一部分。请参见此处的第25行:https://github.com/smartinez87/exception_notification/blob/master/lib/exception_notifier.rb,其中包含:
@@ignored_exceptions = %w{ActiveRecord::RecordNotFound AbstractController::ActionNotFound ActionController::RoutingError ActionController::UnknownFormat}
您可以在环境文件中重写此行为(即development.rb等)。
通知所有错误的示例:
config.middleware.use ExceptionNotifier,
ignore_exceptions: []
将RuntimeError添加到默认忽略列表的示例:
config.middleware.use ExceptionNotifier,
ignore_exceptions: ExceptionNotifier.default_ignore_exceptions + [RuntimeError]