Rails 5.2 не анализирует credentials.yml.enc ERB - PullRequest
0 голосов
/ 05 февраля 2019

Я пытаюсь настроить отправку SMS-сообщений с помощью Twilio.Вот их руководство: https://www.twilio.com/blog/2017/12/send-sms-ruby-rails-5-coffee.html, но у меня проблема с ERB в 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 не обрабатывается с помощью ERB.У кого-нибудь есть хороший обходной путь?Я что-то упустил?

Спасибо!

1 Ответ

0 голосов
/ 05 февраля 2019

Я думаю, вы неправильно используете файл config/credentials.yml.enc.

До этой функции люди использовали переменные окружения для хранения секретов (так как было бы плохой практикой фиксировать их в своем хранилище кода).Это было хлопотно.

Итак, Rails 5.2 представил зашифрованное хранилище.Дело в том, что вам больше не нужно управлять переменными среды, вы просто фиксируете свои секреты непосредственно в своей кодовой базе (но, конечно, зашифрованы).

Так что либо вы пишете свои секреты напрямую в файл config/credentials.yml.encлибо вы хотите сохранить их в переменных окружения, а затем просто использовать файл инициализатора в config/initializers/.Не делайте оба одновременно.

...