4

我正在尝试在本地(开发)测试异常通知器。这是我当前的设置:

development.rb

Myapp::Application.configure do
  # Set Mailer default url
  config.action_mailer.perform_deliveries = true
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.default_url_options = { :host => '0.0.0.0:3000' }
  #config.action_mailer.delivery_method = :file
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
       :address              => 'smtp.gmail.com',
       :port                 => 587,
       :domain               => 'gmail.com',
       :user_name            => 'username@gmail.com',
       :password             => 'password',
       :authentication       => 'plain',
       :enable_starttls_auto => true
   }

  config.middleware.use ExceptionNotification::Rack,
    :email => {
      :email_prefix => "[Myapp Error] ",
      :sender_address => %{"notifier" <no-reply@myapp.com>},
      :exception_recipients => %w{myemail@gmail.com}
    }
end

但是当我在应用程序中“创建”一个错误时——例如,如果我设置了不存在的 ID,比如

http://localhost:3000/users/12270/edit

我在浏览器中只看到错误,但未发送电子邮件(电子邮件凭据正确)。

我想念什么?

比你

4

3 回答 3

1

要在开发模式下禁用错误页面,您还需要设置:

config.consider_all_requests_local = false
于 2014-10-11T23:05:36.813 回答
1

ExceptionNotifier将在 500 错误时发送消息。但是,您的测试“...如果我请求不存在的 ID...”返回 404 未找到。 从文档

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

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

于 2015-07-17T21:30:20.760 回答
-2

我通常gem letter_opener用于开发环境。

我认为 Exception Notifier 不会在开发环境中发送电子邮件,这是可以理解的,因为您在开发中破坏了所有类型的东西,并且每一个都出现错误会很烦人。

于 2019-05-23T07:27:16.767 回答