【问题标题】:Exception_Notification is not aware of RecordNotFound exceptionsException_Notification 不知道 RecordNotFound 异常
【发布时间】:2013-10-20 18:48:34
【问题描述】:

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

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

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

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

提前致谢

【问题讨论】:

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


    【解决方案1】:

    这些异常类型作为该 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]
    

    【讨论】:

    • 你是对的!非常感谢!我一定已经更仔细地阅读了关于忽略异常的部分,因为它已经说过:ignore_exceptions 默认是:%w{ActiveRecord::RecordNotFound AbstractController::ActionNotFound ActionController::RoutingError} :(。我欠你几杯啤酒.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-03
    • 2015-11-14
    • 1970-01-01
    相关资源
    最近更新 更多