将 credentials.yml 与 Rails 和 Heroku 结合使用

Using credentials.yml with Rails and Heroku

我在 Rails 5.2 上有一个应用程序,它以前托管在 DigitalOcean 上,但我需要在 heroku 上托管它。我一直在读到 heroku 无法读取 Credentials.yml of 因为它在 gitignore 上,当然我不想要它 public.

所以我的关键变量是这样的(以 redis 为例):

host: Rails.application.credentials.redis_host,
  password: Rails.application.credentials.redis_password

Heroku 无法读取此内容。所以我的问题是将其更改为 heroku ENV 变量的最佳方法是什么?我是否需要将所有当前密钥(大约 340 个)编辑为 ENV['SOMEKEY']?

非常感谢你的帮助!

创建 credentials.yml 和主密钥:

rails credentials:edit 

编辑凭据:

EDITOR=vim rails credentials:edit

与VIM合作:

  • 用于插入
  • 按 i //进行必要的编辑
  • 退出按Esc
  • :wq //用于退出和保存
  • :问! //不保存退出

CREDENTIALS.YML 的外观示例:

development:
   github:
      client: acascascsacascascasc
      secret: vdsvsvg34g34g
production:
   github:
      client: 34g3rvv
      secret: erberb43

查找证书:

rails c
Rails.application.credentials.dig(:aws, :access_key_id)

或者如果使用环境变量

Rails.application.credentials[Rails.env.to_sym][:aws][:access_key_id]

credentials.yml 文件不应在 gitignore 中。

解密凭据的主密钥应该在 gitignore 中。

要在生产环境中设置主密钥:

heroku config:set RAILS_MASTER_KEY=123456789

heroku config:set RAILS_MASTER_KEY=`cat config/master.key`

关于 Ruby 在 Rails 中的凭据,您需要了解的就是这些。祝你好运:)

更新:I've created a screencast covering the topic :)