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
  1. ここにいくつかのものを投げます、多分そのファイルはイニシャライザディレクトリに正しいですか?
  2. Rails.configuration....自分のものを変更して、代わりに定数に変更できますか?例SMTP_DOMAIN = 'derp.com'など。

それが最初に機能するかどうか疑問に思うだけで、wtfが処理を進めていることがわかりますRails.configuration....。これがTDDだったとしたら、グリーンにしましょう。Rails.configurationが個人的にそのように使用されているのを見たことがありませんが、誰が知っているのでしょうか。

于 2012-05-14T18:10:57.210 に答える
0

これが来るのを見たことはありませんが、私require_relative 'initializers/secrets'の一番上に追加すると、environment.rb期待どおりに機能します。

これは、私が理解しているように、すでにロードされているはずの初期化子にあるため、私には困惑しています。

誰かが理由を説明できれば、私自身の答えよりもあなたの答えを喜んで受け入れます。ありがとう。

于 2012-05-14T19:04:33.887 に答える