【发布时间】: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的值是多少?是<%= ENV.fetch("TWILIO_PHONE_NUMBER", "XXXXXXX") %>吗? -
是的
Rails.application.credentials.twilio_phone_number最终成为<%= ENV.fetch("TWILIO_PHONE_NUMBER", "XXXXXXX") %>
标签: ruby-on-rails twilio erb twilio-api ruby-on-rails-5.2