Exception_Notification不知道RecordNotFound异常

时间:2013-10-12 21:19:51

标签: ruby-on-rails exception-handling rack-middleware exception-notification

我第一次尝试使用exception_notification。我观看了Railscast并遵循了作者在http://smartinez87.github.io/exception_notification/中的说明。一切似乎在某些例外情况下工作正常,但与其他情况不同。

我测试并收到了来自我的开发环境的电子邮件错误通知,其中包含"An ActionView::Template::Error occurred in static_pages#home:“等错误。但是,有一些例外情况,例如RoutingExceptionRecordNotFound未被捕获ExceptionNotification,我不知道为什么,因为我的application_controller中没有任何rescue_from策略。

我正在使用rails 3.2.12并检查了中间件堆栈数组,我可以看到ExceptionNotification只是最后一个,并且看起来某种异常不会在堆栈中出现,所以Exception Notification是不知道他们。

所以,问题是:我做错了什么? ActionController::RoutingErrorActiveRecord::RecordNotFound之间的差异是什么,ExceptionNotification和ActionView::Template::Error未被捕获并导致异常通知将通知电子邮件发送到我的收件箱。

提前致谢

1 个答案:

答案 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]