在铁路上的费加罗宝石

时间:2015-01-08 20:26:41

标签: ruby-on-rails secret-key

我正努力在我的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设置?

谢谢

2 个答案:

答案 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"