2012-02-23 6 views
6

私はconfig.ymlファイルに電子メールアカウント情報を保存します。その情報を、私がオンラインで見た共通パターンに従ったRails設定/初期化子ファイルの定数にロードしていて、at this RailsCastの輪郭を描きました。 Mat Harvard's Blogの例に従って、config/application.rbファイル内のconfig.action_mailer.smtp_settingsを使用して、Action Mailerのデフォルトをセットアップしようとしています。私はレールサーバを起動するときに、初期化されていない一定のエラーが発生し続ける。私は、application.rbがconfig/initializersの前に呼び出されていると仮定しています。起動時にconfig.action_mailer.smtp_settingsを設定できる別の場所はありますか?config/initializersを実行した後ですか?設定/初期化プログラムの実行後にアクションメーラーのデフォルトを設定する方法は?

更新: 私の最初の投稿/質問では明確ではないかもしれません。私はイニシャライザでconfig.ymlファイルを読んでいます。この設定ファイルには、ユーザー名やパスワードなどの電子メールアカウント情報が格納されます。私はこの情報(ユーザー名とパスワード)をapplication.rbファイルまたはenvironment.rbファイルに入れたくありません。私は自分のコードをenvironment.rbファイルに移動しようとしましたが、レールを起動するときに同じ初期化されていない一定のエラーが発生しました。アクションメーラーの設定を設定する

私のコードは次のようになります。

config.action_mailer.smtp_settings = { 
    :address    => APP_CONFIG[:email_config][:address], 
    :port     => APP_CONFIG[:email_config][:port], 
    :domain    => APP_CONFIG[:email_config][:email_domain], 
    :user_name   => APP_CONFIG[:email_config][:user_name], 
    :password    => APP_CONFIG[:email_config][:password], 
    :authentication  => :plain, 
    :enable_starttls_auto => true 
    } 

    config.action_mailer.default_url_options = { 
    :host => APP_CONFIG[:email_config][:host] 
    } 

私はload_config.rb初期化子でAPP_CONFIG定数を設定するconfig.ymlファイルから読んでいます。このファイルは、以下の2行が含まれています。初期化子は、おそらくofficial ActionMailer guideのガイドラインに従い、少なくともではないのRails 3に、この情報のための右の場所ではありません

raw_config = File.read(RAILS_ROOT + "/config/config.yml") 
APP_CONFIG = YAML.load(raw_config)[RAILS_ENV] 

答えて

0

を、私は環境に情報を置きますファイル - 私は定数の定義はあなたがどのような環境にあるかによって変わると考えており、これは同じ効果を持ちます。だから、設定/環境/ production.rb中:臆面もなく私はちょうど参照ガイドから盗まれた

config.action_mailer.delivery_method = :smtp 
config.action_mailer.smtp_settings = { 
    :address    => "smtp.gmail.com", 
    :port     => 587, 
    :domain    => 'baci.lindsaar.net', 
    :user_name   => '<username>', 
    :password    => '<password>', 
    :authentication  => 'plain', 
    :enable_starttls_auto => true } 

+2

私はapplication.rbかenvironment.rbにファイルのいずれかでユーザ名とパスワードを入れないようにしようとしています。コードサンプルを含めるために私の元の質問/投稿を更新しました。上記で設定した設定コードは、イニシャライザにはありませんでした。これはapplication.rbにあります。私のconfig.ymlファイルで読むコードは、イニシャライザに入っています。 –

+0

だから、あなたはファイルを使用する前にイニシャライザを読み込もうとしましたか? – xecutioner

4

あなたはイニシャライザでこのような何かを置くことができます。

ActionMailer::Base.default_url_options = { :host => 'mysite.com' }