【问题标题】:Rails 5.2 credentials.yml.enc ERB not parsingRails 5.2 credentials.yml.enc ERB 不解析
【发布时间】:2019-06-29 06:30:38
【问题描述】:

我正在尝试使用 Twilio 设置 SMS 短信。我将在此处浏览他们的指南:https://www.twilio.com/blog/2017/12/send-sms-ruby-rails-5-coffee.html,但我遇到了一个问题,即不为 ​​twilio 凭据解析 credentials.yml.enc 中的 ERB。

我尝试在不使用指南中推荐的 ERB 的情况下添加凭据,虽然可行,但我无法将这些凭据定义为环境变量。

# config/credentials.yml

twilio_account_sid:  <%= ENV.fetch("TWILIO_ACCOUNT_SID", "XXXXXXX") %>
twilio_auth_token:  <%= ENV.fetch("TWILIO_AUTH_TOKEN", "XXXXXXX") %>
twilio_phone_number:  <%= ENV.fetch("TWILIO_PHONE_NUMBER", "XXXXXXX") %>
# config/initializers/twilio.rb

Twilio.configure do |config|
  config.account_sid = Rails.application.credentials.twilio_account_sid
  config.auth_token = Rails.application.credentials.twilio_auth_token
end

我在控制台中运行了这个:

client = Twilio::REST::Client.new
  client.messages.create({
    from: Rails.application.credentials.twilio_phone_number,
    to: '+11231234',
    body: 'Hello there! This is a test'
  })

我最终得到:

URI::InvalidURIError (bad URI(is not URI?): https://api.twilio.com/2010-04-01/Accounts/<%= ENV.fetch("TWILIO_ACCOUNT_SID", "XXXXXXX") %>/Messages.json)

我猜这是因为 Rails 5.2 的新加密凭据.yml 文件没有得到 ERB 处理。有人有好的解决方法吗?我错过了什么吗?

谢谢!

【问题讨论】:

  • 要编辑凭证并使用 .enc 文件,运行 EDITOR=vi rails credentials:edit 并将密钥放在那里(而不是使用 env 变量或 credentials.yml 文件)。
  • puts输出时Rails.application.credentials.twilio_phone_number的值是多少?是&lt;%= ENV.fetch("TWILIO_PHONE_NUMBER", "XXXXXXX") %&gt;吗?
  • 是的 Rails.application.credentials.twilio_phone_number 最终成为 &lt;%= ENV.fetch("TWILIO_PHONE_NUMBER", "XXXXXXX") %&gt;

标签: ruby-on-rails twilio erb twilio-api ruby-on-rails-5.2


【解决方案1】:

我认为您误用了 config/credentials.yml.enc 文件。

在该功能之前,人们会使用环境变量来存储机密(因为将它们提交到您的代码存储库是一种不好的做法)。这很麻烦。

于是,Rails 5.2 引入了加密存储。关键是你不再需要管理环境变量,你只需将你的秘密直接提交到你的代码库中(当然是加密的)。

因此,要么直接将机密写入config/credentials.yml.enc 文件,要么将它们保存在环境变量中,然后只使用config/initializers/ 中的初始化文件。不要同时做这两件事。

【讨论】:

  • 我可能误用了它。我刚开始使用 5.2。我想我认为我可以使用环境变量为开发/登台环境定义不同的值。如果不使用环境变量,您会如何建议这样做?
猜你喜欢
  • 2018-09-16
  • 1970-01-01
  • 1970-01-01
  • 2020-01-27
  • 1970-01-01
  • 2016-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多