Rails 4 + Exception Notifier在开发模式下不发送电子邮件

时间:2014-10-11 20:49:36

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

我正在尝试在本地测试Exception Notifier(开发)。这是我目前的设置:

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

但是当我&#34;创造&#34;应用程序中的错误 - 例如,如果我设置了不存在的ID,例如

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

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

我想念什么?

比你

3 个答案:

答案 0 :(得分:1)

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

config.consider_all_requests_local = false

答案 1 :(得分:1)

ExceptionNotifier会在500错误时发送消息。但是,您的测试&#34; ...如果我请求不存在的ID ...&#34; 会返回未找到的404。 From the docs

  

某些机架应用程序(特别是Rails)使用&#34; X-Cascade&#34;标题为   将请求处理职责传递给下一个中间件   叠加。

     

滑轨&#39;路由中间件使用这种策略,而不是提高   例外,处理路由错误(例如404s);被通知   每当发生404时,将此选项设置为&#34; false。&#34;

答案 2 :(得分:0)

我通常在开发环境中使用gem letter_opener

我认为Exception Notifier不会在开发环境中发送电子邮件,这是可以理解的,因为您破坏了开发中的所有事物,并且每个人都出错了。