我有一个文件 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"
但是,我不能在制作中对此进行评论!非常感谢任何帮助,谢谢!
答案 0 :(得分:0)
Rails.configuration....
内容并将其更改为常量。例如,SMTP_DOMAIN = 'derp.com'
等。只是想知道这是否有效,那么你可以看到wtf正在进行Rails.configuration....
的事情。如果这是TDD,我们会说,让它变绿。我没有看到像个人那样使用Rails.configuration,但谁知道,也许这是件事。
答案 1 :(得分:0)
从未看到过这种情况,但如果我将require_relative 'initializers/secrets'
添加到environment.rb
的顶部,则可以按照我的预期进行操作。
这对我来说很困惑,因为是在初始化程序中,据我所知应该已经加载了。
如果有人能解释为什么我会高兴地接受你自己的回答。感谢。