Rails 4初始化程序未加载

时间:2013-12-01 12:17:20

标签: ruby ruby-on-rails-4

我正在尝试将我的电子邮件密码放在.yml文件中。

config/initializers下,我有一个文件emailers_config.rb

require 'yaml'
EMAIL_CONFIG = YAML.load(File.read(Rails.root + "config/mailer_config.yml"))

在我的config/mailer_config.yml我有:

#production password
smtp_password_pro: foo
#devevopment env password
smtp_password_dev: bar

现在看来我的初始化没有运行,因为我得到了这个uninitialized constant EMAIL_CONFIG (NameError)

现在Rails应该在initializers文件夹下提供所有内容,因此加载文件不是问题。

这里有什么问题?

4 个答案:

答案 0 :(得分:3)

如果您在访问YAML文件中的常量时遇到问题,请尝试使用control + c关闭本地服务器,然后运行:

$ spring stop

再次启动服务器或控制台:

$ rails [server | console]

您可以访问该常量。

答案 1 :(得分:1)

我不知道你问题的答案,但我可以推荐另一种方法
密码可以更容易地存储到.env文件中 http://i.stack.imgur.com/jbcAO.png
像这样

#Root dir create file ".env"
PASSWORD=123456

并加载密码

#Somewhere in app
ENV['PASSWORD'] #=> 123456

它有效,我希望能帮到你

enter image description here

答案 2 :(得分:0)

试试这个:

config / mailer_config.yml

  development:
    smtp_password: foo
  production:
    smtp_password: bar

然后,在 emailers_config.rb

  EMAIL_CONFIG = YAML.load_file("#{Rails.root}/config/mailer_config.yml")[Rails.env]

现在,您将获得每个环境的密码,使用:

  EMAIL_CONFIG['smtp_password']

答案 3 :(得分:0)

尝试这样的事情: ENGINE_CONFIG = YAML.load(File.read(File.join(Rails.root," config / subfolder"," engine.yml")))[Rails.env]