Правильный способ хранения ключей API для credentials.yml.enc? - PullRequest
0 голосов
/ 26 октября 2018

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

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

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

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

Что я делаю:

Вызовите «РЕДАКТОР = учетные данные атомных рельсов: редактировать» в 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.

Ответы [ 2 ]

0 голосов
/ 22 декабря 2018

Из того, что вы написали, похоже, что вы делаете это в Rails 5.2

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

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

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

0 голосов
/ 26 октября 2018

То, что вы читаете через учетные данные из 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..
...