我正在尝试将我的电子邮件密码放在.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文件夹下提供所有内容,因此加载文件不是问题。
这里有什么问题?
答案 0 :(得分:3)
如果您在访问YAML文件中的常量时遇到问题,请尝试使用control + c
关闭本地服务器,然后运行:
$ spring stop
再次启动服务器或控制台:
$ rails [server | console]
您可以访问该常量。
答案 1 :(得分:1)
我不知道你问题的答案,但我可以推荐另一种方法
密码可以更容易地存储到.env
文件中
像这样
#Root dir create file ".env"
PASSWORD=123456
并加载密码
#Somewhere in app
ENV['PASSWORD'] #=> 123456
它有效,我希望能帮到你
答案 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]