在 Rails 和 Heroku 中使用 credentials.yml

the*_*Kid 7 ruby-on-rails heroku environment-variables ruby-on-rails-5

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

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

host: Rails.application.credentials.redis_host,
  password: Rails.application.credentials.redis_password
Run Code Online (Sandbox Code Playgroud)

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

我会很感激你的帮助!

Ysh*_*rov 18

创建credentials.yml 和主密钥:

rails credentials:edit 
Run Code Online (Sandbox Code Playgroud)

编辑凭据:

EDITOR=vim rails credentials:edit
Run Code Online (Sandbox Code Playgroud)

使用 Vim:

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

CREDENTIALS.YML 外观示例:

development:
   github:
      client: acascascsacascascasc
      secret: vdsvsvg34g34g
production:
   github:
      client: 34g3rvv
      secret: erberb43
Run Code Online (Sandbox Code Playgroud)

查找凭据:

rails c
Rails.application.credentials.dig(:aws, :access_key_id)
Run Code Online (Sandbox Code Playgroud)

或者如果使用了环境变量

Rails.application.credentials[Rails.env.to_sym][:aws][:access_key_id]
Run Code Online (Sandbox Code Playgroud)

credentials.yml 文件不应在 gitignore 中。

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

要在生产中设置您的主密钥:

heroku config:set RAILS_MASTER_KEY=123456789
Run Code Online (Sandbox Code Playgroud)

或者

heroku config:set RAILS_MASTER_KEY=`cat config/master.key`
Run Code Online (Sandbox Code Playgroud)

这就是您需要了解的有关 Ruby on Rails 凭据的全部信息。祝你好运 :)

更新:我已经创建了一个涵盖该主题的截屏视频:)

  • 这是最令人惊奇的解释。谢谢,它成功了! (2认同)