【问题标题】:Production server doesn't recognise environment variables set by Figaro gem生产服务器无法识别 Figaro gem 设置的环境变量
【发布时间】:2012-10-26 03:46:16
【问题描述】:

我在使用 Figaro gem 设置的外部文件 (config/application.yml) 中设置了 Sendgrid 密码。这在我的本地机器上工作正常,但在我的服务器上我收到一个错误,没有设置密码:

ArgumentError (SMTP-AUTH requested but missing secret phrase)

当我将 Sendgrid 配置更改为纯文本密码时,它工作正常,所以我假设 Rails 无法识别环境变量。奇怪的是,当我进入rails console production 并执行puts ENV["SENDGRID_PASSWORD"] 时,它工作正常。

有什么想法吗?

这是我的 Sendgrid 配置:

config.action_mailer.smtp_settings = {
  :address              => "smtp.sendgrid.net",
  :port                 => 587,
  :user_name            => "chrislawrence",
  :password             => ENV['SENDGRID_PASSWORD'],
  :domain               => "lakecinema.net.au",
  :authentication       => :plain,
  :enable_starttls_auto => true
}

【问题讨论】:

  • 我使用 ENV 变量获得了相同的行为,该变量设置在初始化程序中,在主题(在邮件程序文件中)或正文中(在邮件程序的视图中)。它忽略了我设置的 ENV 变量,即使在缓存清除所有内容、重新启动服务器等之后。不过,控制台中的值是正确的。不使用 Figaro,因此不限于此。

标签: ruby-on-rails


【解决方案1】:

我遇到了同样的问题,不明白为什么 Rails 认为我没有给它一个密码。原来我在一个文件中定义config.action_mailer.smtp_settings,然后在另一个文件中添加键值组合。问题是我使用的是merge 而不是merge!,所以我的密码从未进入 smtp_settings 而是进入临时哈希。

从这次经验中,我了解到您收到的错误消息是 ActionMailer 的说法“密码在哪里?”

所以我的猜测是您的问题与Environment variable in Rails console and Pow 正好相反,其中环境变量在 Rails 服务器上运行,但在 Rails 控制台中不运行。尝试执行:

$ echo "$SENDGRID_PASSWORD"

看看你会得到什么。我感觉未设置 Env 变量,但它只是 Rails 控制台中的一个局部变量。

【讨论】:

  • 遇到同样的问题,但在我的情况下,原因是我在 production.rb 配置中使用了不正确的密钥(符号) - :user_password 而不是 :password。我的坏
【解决方案2】:

应该是 :authentication => 'plain'

【讨论】:

  • 这应该是一条评论
猜你喜欢
  • 1970-01-01
  • 2015-08-05
  • 1970-01-01
  • 2014-04-03
  • 1970-01-01
  • 2018-01-28
  • 1970-01-01
  • 2016-12-13
相关资源
最近更新 更多