ruby-on-rails - 生产服务器无法识别 Figaro gem 设置的环境变量

标签 ruby-on-rails

我在使用 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
}

最佳答案

我遇到了同样的问题,无法弄清楚为什么 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 控制台中的一个局部变量。

关于ruby-on-rails - 生产服务器无法识别 Figaro gem 设置的环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13080445/

相关文章:

ruby-on-rails - Rails - 在 if 语句中将 1 映射为 true

ruby-on-rails - 为什么 'FactoryGirl.lint' 给出 InvalidFactoryError?

html - 如何将缩略图照片添加到 ruby​​ on rails 中的页眉?

html - 如何在这个响应式、可翻转的圆圈中垂直居中图像?

ruby-on-rails - Rails 对现有的 ActiveRecord 结果数组进行分页

ruby-on-rails - 雾 - 获取 S3 中对象的大小

ruby-on-rails - json请求在rails中返回html

ruby-on-rails - 在 Rails 教程第 9 章中找不到 id=edit 的用户

ruby-on-rails - 多个左连接与 rails 4

mysql - Rails 搜索错误的 has_and_belongs_to_many 表