Rails的5.2 credentials.yml.enc ERB不解析

问题描述 投票:1回答:1

我试图与Twilio设置手机短信。我要在这里直通他们的向导:https://www.twilio.com/blog/2017/12/send-sms-ruby-rails-5-coffee.html但我在credentials.yml.enc没有被解析为twilio凭据运行到一个问题与再培训局。

我已经尝试添加凭据,而无需使用指南,其中工程中推荐的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的新的加密credentials.yml文件不会与雇员再培训局处理。任何人有一个好的解决方法吗?我缺少的东西吗?

谢谢!

ruby-on-rails twilio erb twilio-api ruby-on-rails-5.2
1个回答
1
投票

我认为你在滥用config/credentials.yml.enc文件。

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

那么,Rails的5.2引入了加密存储。问题的关键是,你再也不会有管理的环境变量,你只需直接提交你的秘密到你的代码(当然加密)。

所以,要么你直接写你的秘密到config/credentials.yml.enc文件,无论是你想要让他们在环境变量,然后只用一个初始化文件中config/initializers/。同时不要两者都做。

© www.soinside.com 2019 - 2024. All rights reserved.