我想将电子邮件帐户信息存储在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