Exception_Notification не знает об исключениях RecordNotFound

Я пытаюсь использовать exception_notification в первый раз. Я смотрел Railscast и следовал инструкциям автора в http://smartinez87.github.io/exception_notification/. Кажется, что все работает нормально с некоторыми исключениями, но не с другими.

Я протестировал и получил уведомления об ошибках по электронной почте от моей среды разработки с такими ошибками, как "An ActionView::Template::Error occurred in static_pages#home:". Но есть некоторые исключения, такие как RoutingException и RecordNotFound, которые не перехватываются ExceptionNotification, и я не знаю почему, поскольку у меня нет Стратегия escape_from любого рода в моем application_controller.

Я использую rails 3.2.12 и проверил массив стека промежуточного программного обеспечения, и я вижу, что ExceptionNotification является последним, и кажется, что некоторые исключения не проходят свой путь вниз по стеку, поэтому уведомление об исключении не знает об их.

Итак, вопрос: что я делаю не так? в чем разница между ActionController::RoutingError или ActiveRecord::RecordNotFound, которые не перехватываются ExceptionNotification, и ActionView::Template::Error, который перехватывается и заставляет Exception Notification отправлять уведомление по электронной почте в мой почтовый ящик.

заранее спасибо




Ответы (1)


Эти типы исключений игнорируются как часть конфигурации по умолчанию этого драгоценного камня. См. строку 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]
person steakchaser    schedule 12.10.2013
comment
Ты прав! Большое спасибо! Должно быть, я более внимательно прочитал раздел об игнорируемых исключениях, так как там уже сказано о :ignore_exceptions, что по умолчанию используется: %w{ActiveRecord::RecordNotFound AbstractController::ActionNotFound ActionController::RoutingError} :(. Я должен вам пару пива . - person Juanra; 13.10.2013