我正努力在我的rails 4 app上设置figaro。
我有application.yml:
GMAIL_USERNAME_CFR: aaa@gmail.com
GMAIL_PW_PROD_CFR: bbb
GMAIL_USERNAME_PROD_WELCOME: ccc@gmail.com
GMAIL_PW_PROD_WELCOME: ddd
我有一个production.rb文件:
config.action_mailer.smtp_settings = {
address: 'smtp.gmail.com',
port: 587,
domain: 'gmail.com',
user_name: Figaro.env.GMAIL_USERNAME_CFR,
password: Figaro.env.GMAIL_PW_PROD_CFR,
authentication: 'plain',
enable_starttls_auto: true }
在我的user.rb中,我设置了2个邮件程序。当我不使用figaro并将用户名和密码直接放在production.rb文件中时 - 这些邮件工作。使用Figaro,我收到了身份验证错误。
我的user.rb方法是:
def send_admin_mail
puts "the value is:" + Figaro.env.GMAIL_USERNAME_CFR.to_s
AdminMailer.new_user_waiting_for_approval(self).deliver
end
def send_user_welcome_mail
AdminMailer.new_user_waiting_for_access(self).deliver
end
你可以看到我试图通过上面第一种方法中的puts行找出问题。日志将'值为',然后不将用户名作为字符串。
我的邮件是:
def new_user_waiting_for_approval(user)
@user = user
mail(to: "aaa@gmail.com", from: Figaro.env.GMAIL_USERNAME_CFR,
subject: "Registration Request #{user.first_name} #{user.last_name} <#{user.email}>")
end
def new_user_waiting_for_access(user)
@user = user
mail(to: user.email, from: "ccc@gmail.com", subject: "Welcome, #{user.first_name}")
end
您可以在上面看到我尝试在第一封邮件中使用figaro,在第二封电子邮件中使用电子邮件地址。两种选择都不起作用。我还在用户名和密码之前尝试了ENV []而不是Figaro.env。
当我将它们转换为字符串时,我的控制台会正确显示详细信息 - 除了它们显示在“”之间。我认为那没有意义。
任何人都可以看到我需要做些什么来修复我的figaro设置?
谢谢
答案 0 :(得分:2)
好的,我的问题是我没有将环境变量从我的application.yml
加载到Heroku。由于该文件列在.gitignore
中,因此不会将其提交给GitHub。
要将环境变量加载到Heroku,请执行figaro heroku:set -e production
。正如它解释here。
答案 1 :(得分:0)
您无需致电Figaro.env
即可阅读 application.yml 文件。只需使用标准导轨获取环境变量。
例如,更改:
Figaro.env.GMAIL_USERNAME_CFR
要:
ENV['GMAIL_USERNAME_CFR']
将Figaro.env
的所有实例更改为此格式。
另外,将application.yml文件中的变量设置为字符串。
GMAIL_USERNAME_CFR: "aaa@gmail.com"
GMAIL_PW_PROD_CFR: "bbb"
GMAIL_USERNAME_PROD_WELCOME: "ccc@gmail.com"
GMAIL_PW_PROD_WELCOME: "ddd"