【问题标题】:Rails 6 accessing credentials does not work?Rails 6 访问凭据不起作用?
【发布时间】:2020-12-03 16:06:44
【问题描述】:

我正在尝试为 Rails 6 项目设置 Stripe 支付表单,但我无法访问我的 Stripe 密钥。我收到错误NoMethodError (undefined method `[]' for nil:NilClass) 我做错了什么?

这就是我所做的

  1. 编辑我的 credentials.yml.enc - 在控制台中输入 EDITOR="code --wait" bin/rails credentials:edit

  2. 将我的密钥添加到 credentials.yml.enc

    some_variable: secret_stuff
    development: 
      stripe:
        stripe_public_key: fake_key
        strip_secret_key: fake_key
    
  3. 关闭文件并仔细检查它是否保存了我的代码,方法是打开文件以验证它是否已保存(确实如此)

  4. 打开rails控制台并输入Rails.application.credentials.some_variable
    我期待secret_stuff,但我得到了nil
    输入Rails.application.credentials.development[:stripe][:stripe_public_key]. 我期待fake_key,但我得到了NoMethodError (undefined method `[]' for nil:NilClass)

我做错了什么?

我无法显示信用卡表单,我只想启动并运行它,这样我就可以向人们收费并成为百万富翁。

【问题讨论】:

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


    【解决方案1】:

    您可能错误地访问凭据环境,这应该可以:

    Rails.application.credentials[Rails.env.to_sym][:stripe][:stripe_public_key]
    

    credentials.development => credentials[Rails.env.to_sym](所以你正在访问当前环境变量)

    【讨论】:

    • “阅读文档”他们说。那么文档中的哪个位置是 Rails.env.to_sym ?谢谢你。
    • 不,这实际上也不起作用。甚至无法部署,RAILS_ENV=production bundle exec rake assets:precompile 不起作用。为生产预编译的工作是使用 dig 方法。当然,然后可以部署,但这也不起作用。是腰。现在2天。他们如何解决这个问题也非常令人沮丧。
    【解决方案2】:

    我不得不做Rails.application.credentials.stripe[:stripe_public_key]

    【讨论】:

      猜你喜欢
      • 2022-08-13
      • 2021-11-12
      • 2018-10-28
      • 2014-11-04
      • 1970-01-01
      • 2019-03-12
      • 2017-11-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多