1

我第一次尝试使用 exception_notification。我观看了 Railscast 并按照作者在http://smartinez87.github.io/exception_notification/中的说明进行操作。在某些例外情况下,一切似乎都可以正常工作,但在其他情况下则不然。

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

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

所以,问题是:我做错了什么? ExceptionNotification 捕获ActionController::RoutingError或未捕获哪些和捕获并导致异常通知将通知电子邮件发送到我的收件箱之间有什么区别。ActiveRecord::RecordNotFoundActionView::Template::Error

提前致谢

4

1 回答 1

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]
于 2013-10-12T23:01:11.707 回答