我想將電子郵件帳戶信息存儲在config.yml文件中。我將這些信息加載到Rails config/initializers文件中的一個常量中,遵循我在線上看到的常見模式並列出了at this RailsCast。我試圖在config/application.rb文件中使用config.action_mailer.smtp_settings爲Action Mailer設置默認值,下面是Mat Harvard's Blog的示例。啓動我的Rails服務器時,我不斷收到未初始化的常量錯誤。我假設在config/initializers之前調用了application.rb。是否有另一個位置可以在啓動過程中設置config.action_mailer.smtp_settings,但在config/initializers運行後?如何在config/initializers運行後設置Action Mailer默認值?
更新: 我可能在我最初的帖子/問題中沒有清楚。我正在讀取初始化程序中的config.yml文件。此配置文件存儲電子郵件帳戶信息,例如用戶名和密碼。我不想將這些信息(用戶名和密碼)放在application.rb或environment.rb文件中。我嘗試將我的代碼移動到environment.rb文件,但啓動rails時遇到相同的未初始化的常量錯誤。
我的代碼來設置動作郵件的設置是這樣的:
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]
}
我從config.yml文件設置在load_config.rb初始化的APP_CONFIG恆念。該文件包含了2線以下:
raw_config = File.read(RAILS_ROOT + "/config/config.yml")
APP_CONFIG = YAML.load(raw_config)[RAILS_ENV]
我試圖避免將用戶名和密碼,無論是在application.rb中或environment.rb中的文件。我已更新我的原始問題/帖子以包含代碼示例。上面提供的配置代碼不在初始化程序中 - 它在application.rb中。只是在我的config.yml文件中讀取的代碼是在初始化器中。 – 2012-02-23 20:49:00
那麼你有沒有在環境文件之前加載初始化程序? – xecutioner 2013-11-09 06:35:05