将API密钥存储到certificate.yml.enc的正确方法?

时间:2018-10-25 21:52:47

标签: javascript ruby-on-rails ruby stripe-payments

我正在尝试存储我的Stripe Elements的API密钥。您可以在这里查看我以前的文章:Using javascript for Stripe Elements

如您所见,Stripe Elements没有与Stripe或我的stripejs.js文件中的JS一起显示。

由于我的API密钥存储不正确,我假设它的https://js.stripe.com/v3/无法显示。我目前将我的API密钥存储在由dotenv gem管理的.env文件中

我正在尝试将我的API密钥与凭据.yml.enc存储在一起,但不确定我是否正确执行了操作。

我做什么:

在CMD中调用“ EDITOR = atom rails凭证:edit”。 原子弹出。 我通过以下方式存储API密钥: PUBLISHABLE_KEY = pk_test_1111111111111111111 SECRET_KEY = sk_test_11111111111111111111

保存文件。 退出。

尽管如此,它不会起作用。我存储不正确吗?做错什么了吗?

在我的stripe.rb文件中,初始化程序为:

"FOO": "$FOO",

编辑:

我的stripe.rb文件的结构如下:

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

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

,然后像这样保存我的凭据文件:

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

我在做错什么吗?

尝试:2:

我尝试在stripe.rb文件中做...

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

上次没有,我得到了错误:“语法错误,意外的'}',期望输入结束”

更新:

万一有人遇到类似问题...

对我来说,这是导致问题的引导程序。您需要做的就是在Stripe Elements表单中使用class =“ form-control”使其正确显示-如果您使用的是Bootstrap。

2 个答案:

答案 0 :(得分:0)

您从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..

答案 1 :(得分:0)

从您撰写的内容来看,看起来就像您在Rails 5.2中进行的操作

通过将stripe.rb文件的最后一行更改为以下内容,我可以在我的应用程序中修复此Rails 5.2:

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

密钥存储在certificate.yml.enc文件中。