1

为了处理异常,我决定使用Exception_notifiergem。这是我使用的代码/config/enviroments/development.rb

  config.middleware.use ExceptionNotifier,
    :email_prefix => "[ERROR] ",
    :sender_address => '"dev-Notifier" <error@my_emails.com>',
    :exception_recipients => ['error@my_emails.com']

如果我犯了一些语法错误,例如:

@article = Article.fixnd(params[:id])

我将收到有关它的错误电子邮件。

但是,如果我将这个地址设置为 URL 行:

http://localhost:3001/articlesssssss

我会收到错误消息,但未发送电子邮件。如果我设置为 url 错误地址(404 错误),则会出现相同的行为。

如果我想收到有关应用程序中每个错误的电子邮件(以及上面的最后 2 个错误),我必须设置什么?

这是我使用的部分ApplicationController

  unless Rails.application.config.consider_all_requests_local
    rescue_from Exception, with: :render_500
    rescue_from ActionController::RoutingError, with: :render_404
    rescue_from ActionController::UnknownController, with: :render_404
    rescue_from ActionController::UnknownAction, with: :render_404
    rescue_from ActiveRecord::RecordNotFound, with: :render_404
  end
4

1 回答 1

0

在 Exception_notification 文档中有一个答案:

https://github.com/smartinez87/exception_notification/#rack-x-cascade-header

机架 X 级联接头

一些机架应用程序(尤其是 Rails)利用“X-Cascade”标头将请求处理职责传递给堆栈中的下一个中间件。

Rails 的路由中间件使用这种策略,而不是引发异常,来处理路由错误(例如 404);要在发生 404 时收到通知,请将此选项设置为“false”。

:ignore_cascade_pass

布尔值,默认值:true

设置为 false 以在另一个机架中间件将“X-Cascade”标头设置为“通过”时触发通知。

于 2016-01-04T20:00:43.610 回答