在克隆上创建新的 Rails 5 凭据



>问题我正在创建一个 rails 5.2 模板。我创建了一个新项目,它是模板的分支。我不想使用相同的config/master.key因为这将在X其他项目之间共享。有没有办法生成新的密钥和config/credentials.yml.enc对?这样我就可以包含一个config/credentials.yml.enc.sample,然后它们运行rails credentials:new或其他东西,然后复制内容?

在文档或谷歌搜索中找不到任何内容,我的替代方案是在我的所有公共项目中使用相同的密钥:,(

如下

所述:https://blog.eq8.eu/til/rails-52-credentials-tricks.html

重新生成密钥

目前没有"编辑密码"功能,您需要复制凭据的原始内容,删除enc文件并重新生成新的凭据文件(源(

  • 步骤 1 复制原始凭据的内容 Rails 凭据:显示
  • 第 2 步 将 config/credentials.yml.enc 和 config/master.key
  • 移开(mv config/credentials.yml.enc ./tmp/&& mv config/master.key ./tmp/(
  • 步骤 3 运行编辑器=vim rails 凭据:编辑
  • 步骤 4 粘贴原始凭据中复制的值
  • 步骤 5 保存并提交 config/credentials.yml.enc

注意! 如果您需要某些文件中的凭据值(例如在 config/database.yml 中(,EDITOR=vim rails credentials:edit可能不起作用

> https://github.com/rails/rails/blob/master/railties/lib/rails/commands/credentials/USAGE

对于在 Rails 5.2 之前创建的应用程序,我们将自动 config/credentials.yml.enc在 第一次运行bin/rails credentials:edit .如果您没有 保存在config/master.key中的主密钥,也将创建。

因此,我可以创建加密文件的纯文本版本来显示需要哪些密钥:

foo_api_key:123

他们运行生成密钥和加密文件的bin/rails credentials:edit然后复制密钥以将它们添加到加密文件中。

使用 @Myk Klemme 在 https://stackoverflow.com/a/48373368/936494 上的回答,我能够成功地重新生成凭据文件config/credentials.yml.encconfig/master.key

为此,我首先删除了从克隆的模板存储库中获得的现有config/credentials.yml.enc文件,然后运行以下命令

rails_new_app$ EDITOR="mate --wait" bin/rails credentials:edit

生成以下输出:

Adding config/master.key to store the encryption key: <encryption_key>
Save this in a password manager your team can access.
If you lose the key, no one, including you, can access anything encrypted with it.
      create  config/master.key

File encrypted and saved.

最新更新