Roku环境变量未在Heroku上生成

时间:2017-04-05 15:48:43

标签: ruby-on-rails ruby heroku delayed-job mailgun

我正在尝试使用Heroku上的Mailgun和DelayedJob设置ActionMail,我已经完成了一切工作,直到DelayedJob使用Mailgun发起请求,但我从Mailgun获得400 Bad Request: 'from' parameter is missing

我的邮件是app/mailers/example_mailer.rb

class ExampleMailer < ApplicationMailer

def sample_email(user)
    @user = user
    mailgun_client = Mailgun::Client.new ENV['MAILGUN_API_KEY']
    message_params = {:from     => ENV['GMAIL_USERNAME'],
                      :to       => @user.email,
                      :subject  => 'Sample Mail Using Mailgun API',
                      :text     => 'Testing...'}

    mailgun_client.send_message ENV['MAILGUN_DOMAIN'], message_params

  end
end

我的config/application.yml

MAILGUN_API_KEY:  '[REDACTED]'
MAILGUN_ADDRESS:  'smtp.mailgun.org'
MAILGUN_PORT:     587
MAILGUN_DOMAIN:   '[REDACTED]'
MAILGUN_USERNAME: '[REDACTED]'
MAILGUN_PASSWORD: '[REDACTED]'
GMAIL_USERNAME:   '[REDACTED]'

因为错误是没有正确设置from字段我登录到我的heroku控制台并测试了我的ENV变量并且看到除了ENV['GMAIL_USERNAME']之外所有变量都存在。我的生产环境中是否有任何原因导致该变量丢失?我不知道如何调试这个,因为我之前从未遇到像这样的环境变量的问题。

1 个答案:

答案 0 :(得分:2)

我是个白痴,我设置figaro来处理我的环境变量并忘记将它们发布到heroku:

figaro heroku:set -e production

此外,您需要将application.yml中的所有变量包装在字符串中,因此我还必须将MAILGUN_PORT更新为&#39; 587&#39;。