Правильный способ хранения ключей API в credentials.yml.enc?

Я пытаюсь сохранить свои ключи API для Stripe Elements .. Вы можете увидеть мой предыдущий пост здесь: Использование javascript для элементов полосы

Как видите, элементы Stripe не отображаются в JS из Stripe или в моем файле stripejs.js.

Я предполагаю, что это https://js.stripe.com/v3/, который каким-то образом не отображается из-за того, что мои ключи API не хранятся правильно. В настоящее время у меня есть ключи API, хранящиеся в моем файле .env, управляемом гемом dotenv.

Я пытаюсь сохранить свои ключи API с помощью credentials.yml.enc, но не уверен, правильно ли я это делаю.

Что я делаю:

Вызовите "EDITOR = atom rails credentials: edit" в CMD. Выскакивает Атом. Я храню ключи API следующим образом: PUBLISHABLE_KEY = pk_test_1111111111111111111 SECRET_KEY = sk_test_11111111111111111111

Сохраните файл. Выход.

Хотя не пойдет. Я не правильно храню? Делаете что-то не так?

В моем файле stripe.rb под инициализаторами есть:

Rails.configuration.stripe = {
  :publishable_key => ENV['PUBLISHABLE_KEY'],
  :secret_key      => ENV['SECRET_KEY']
}

Stripe.api_key = Rails.configuration.stripe[:secret_key]

Редактировать:

У меня мой файл stripe.rb имеет такую ​​структуру:

Rails.configuration.stripe = {
  :publishable_key => Rails.application.credentials.stripe[:publishable_key],
  :secret_key      => Rails.application.credentials.stripe[:secret_key]
}

Stripe.api_key = Rails.configuration.stripe[:secret_key]

а затем сохранил мои файлы учетных данных следующим образом:

stripe:   
    publishable_key: 123456789
    secret_key: 123456789

Затем я получаю сообщение об ошибке при запуске своего сервера:

undefined method \credentials' for Rails:Module (NoMethodError)`

Я что-то делаю не так?

Попытка: 2:

Пробовал делать в файле stripe.rb ...

Rails.configuration.stripe = {
  Rails.application.credentials.stripe[:publishable_key],
  Rails.application.credentials.stripe[:secret_key]
}

Stripe.api_key = Rails.configuration.stripe[:secret_key]

с и без в последний раз ... Я получаю сообщение об ошибке: "синтаксическая ошибка, непредвиденная '}', ожидается конец ввода"

ОБНОВИТЬ:

на случай, если кто-то столкнется с подобной проблемой ...

Для меня проблемы были вызваны загрузкой. Все, что вам нужно сделать, это использовать class = "form-control" в форме Stripe Elements для правильного отображения - если вы используете Bootstrap.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
5
0
915
2

Ответы 2

То, что вы читаете через учетные данные из Rails 5.1, сохраняется не в переменной ENV, а через помощник Rails.

С файлом вроде

aws:
  access_key_id: 123
  secret_access_key: 345
secret_key_base: 2fdea1259c6660852864f9726616df64c8cd

Вы получаете к ним доступ вот так.

Rails.application.credentials.aws[:access_key_id]     # => "123"
Rails.application.credentials.aws[:secret_access_key] # => "345"
Rails.application.credentials.secret_key_base         # => "2fdea..

Я обновил свой вопрос. Я пробовал нечто подобное. но не работает. Я читал об этом в блоге Medium, но не понимаю, что делаю не так.

uno 26.10.2018 05:02

Судя по тому, что вы написали, похоже, что вы делаете это в Rails 5.2.

Я смог исправить этот Rails 5.2 в своем приложении, изменив последнюю строку файла stripe.rb на:

Stripe.api_key = Rails.application.credentials.stripe[:secret_key]

Ключ хранится в файле credentials.yml.enc.

Другие вопросы по теме