Rails 4 - 如果出现错误,异常通知程序不会发送电子邮件

时间:2015-02-25 11:44:37

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

我有一个Rails 4应用程序并使用gem exception_notification。已安装gem,config/environments/production.rb正在关注:

  config.action_mailer.delivery_method = :sendmail
  config.action_mailer.perform_deliveries = true
  config.action_mailer.raise_delivery_errors = true

  config.middleware.use ExceptionNotification::Rack,
    :email => {
      :email_prefix => "[MyProj Error Report] ",
      :sender_address => %{"MyProj" <no-reply@myproj.com>},
      :exception_recipients => %w{info@myproj.com}
    }

no-reply@myproj.com电子邮件地址不存在,info@myproj.com是我的真实电子邮件地址。

如果在制作时出现错误,我就不会收到任何有关它的电子邮件。

我需要添加哪些其他配置信息?

修改 config/environments/production.rb

Rails.application.configure do
  ...
  MyApp::Application.config.middleware.use ExceptionNotification::Rack,
    :email => {
      :email_prefix => "[MyApp_Error] ",
      :sender_address => %{"notifier" <notifier@myAppName.com>},
      :exception_recipients => %w{your_email_id@gmail.com}
    }
end

我使用真实的电子邮件地址修改了代码,但仍未成功。在日志中什么都不是 - 当我想要获取具有不存在ID的记录时,如website.com/articles/123345666777,错误日志中仅包含以下内容:

ActiveRecord::RecordNotFound (Couldn't find Article with 'id'=123345666777):
  app/controllers/articles_controller.rb:175:in `set_article'

2 个答案:

答案 0 :(得分:2)

ActiveRecord::RecordNotFound是一个非常特殊的情况(路由错误和其他一些错误相同)。如果这种异常触发ExceptionNotifier发送邮件,我会感到惊讶。在生产环境中,Rails将通过呈现404(未找到)页面来处理此错误,而不是在Rails无法处理异常时发生的500(服务器错误)。

事实上,ignore_exceptions中的选项ExceptionNotifier默认包含此例外。详细了解ignore_exceptions option and its defaults

答案 1 :(得分:1)

尝试使用这个...与AppName这样: -

 MyAppName::Application.config.middleware.use ExceptionNotification::Rack,
   :email => {
     :email_prefix => "[MyApp_Error] ",
     :sender_address => %{"notifier" <notifier@myAppName.com>},
     :exception_recipients => %w{your_email_id@gmail.com}
   }