1

我有一个文件config/initializers/secrets.rb包含以下内容:

Rails.configuration.smtp_domain = "derp.com"
Rails.configuration.smtp_password = "derpderp"
Rails.configuration.smtp_user = "derp@derp.com"
Rails.configuration.smtp_address = "derp.derp.com"

在我的config/environments/development.rb我有以下内容:

config.action_mailer.smtp_settings = {
    :address              => Rails.configuration.smtp_address,
    :port                 => 587,
    :domain               => Rails.configuration.smtp_domain,
    :user_name            => Rails.configuration.smtp_user,                           
    :password             => Rails.configuration.smtp_password,
    :authentication       => 'login',                                                 
    :enable_starttls_auto => true                                                     
}

现在,当bundle exec rails c我收到此错误时:

`method_missing': undefined method `smtp_address' for #<Rails::Application::Configuration:0x007f8c4505b238> (NoMethodError)

但是,如果我将 smtp 配置注释掉,那么在控制台中我可以这样做:

Loading development environment (Rails 3.2.1)
irb(main):001:0> Rails.configuration.smtp_address
=> "derp.derp.com"

不过,我不能在生产中对此发表评论!任何帮助将不胜感激,谢谢!

4

2 回答 2

0

从未见过这种情况,但如果我添加require_relative 'initializers/secrets'到我的顶部,environment.rb它会按我的预期工作。

这让我感到莫名其妙,因为这在一个初始化程序中,据我所知应该已经加载了。

如果有人能解释为什么我会很乐意接受你的回答而不是我自己的回答。谢谢。

于 2012-05-14T19:04:33.887 回答
0
  1. 在这里扔一些东西,也许该文件在初始化程序目录中正确?
  2. 您可以更改您的Rails.configuration....内容并将其更改为常量吗?例如,SMTP_DOMAIN = 'derp.com'等等。

只是想知道这是否首先有效,然后您会看到 wtf 正在处理Rails.configuration....一些事情。如果这是 TDD,我们会说,让我们把它变成绿色。我个人还没有看到 Rails.configuration 被这样使用,但谁知道呢,也许它是一回事。

于 2012-05-14T18:10:57.210 回答