【问题标题】:How to disable ActionMailer in Development?如何在开发中禁用 ActionMailer?
【发布时间】:2011-12-05 11:54:11
【问题描述】:

有时在我开发过程中,我没有互联网连接。这会在我的应用应该发送电子邮件的任何地方导致错误:

getaddrinfo: nodename nor servname provided, or not known

是否有一种简单快捷的方法可以更改配置值以使 ActionMailer 不尝试实际发送电子邮件而不抛出错误?也许那是开发环境的范围。或者我可以通过其他方式避免抛出错误并且我的代码在我调用 actionmailer 的任何地方传递?

我正在使用 Rails 3.1

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3.1 environment-variables actionmailer


    【解决方案1】:

    如果您想在 Rails 应用程序初始化后(在创建示例数据、迁移期间等)禁用邮件传递:

    ActionMailer::Base.perform_deliveries = false
    

    【讨论】:

      【解决方案2】:

      通常的做法是让 Rails 忽略邮件错误。在您的config/environments/development.rb 文件中添加、取消注释或修改:

      # Don't care if the mailer can't send
      config.action_mailer.raise_delivery_errors = false
      

      你也可以这样设置:

      config.action_mailer.perform_deliveries = false
      

      在此处查看文档http://edgeguides.rubyonrails.org/action_mailer_basics.html#action-mailer-configuration

      你也可以将传递方式设置为:test,但我还没有真正尝试过

      config.action_mailer.delivery_method = :test
      

      【讨论】:

      • 对于对.delivery_method = :test 感兴趣的人:ActionMailer 不会发送任何电子邮件,而是将它们存储在ActionMailer::Base.deliveries 可用的数组中。这可能是大多数人的首选选项,因为它使您能够例如在代码中放置一个断点并确保 ActionMailer 收到了您的发送请求(并且看起来应该如此),或者当然在测试中使用它。 (来源:api.rubyonrails.org/classes/ActionMailer/Base.html
      猜你喜欢
      • 2014-02-11
      • 1970-01-01
      • 2014-12-12
      • 1970-01-01
      • 2014-01-13
      • 1970-01-01
      • 2014-02-16
      • 1970-01-01
      • 2013-02-25
      相关资源
      最近更新 更多