secrets.yml克隆时,如何制作新的secrets.yml文件

时间:2014-07-07 19:16:18

标签: ruby-on-rails ruby-on-rails-4 secret-key

使用Rails 4.1.1,我创建了一个项目。搞定了,跑了,现在我想和我的研究开发团队分享。当然,.gitignore会隐藏源代码控制中的secrets.yml文件,但是他们的版本在没有自己版本的secrets.yml文件的情况下无法运行,会出现以下错误:

  

处理请求时出现意外错误:发现错误secret_key_base'环境,在`config / secrets.yml

中设置此值
  • 我们需要分享秘密令牌吗? (因此只需将其复制并粘贴到本地机器上)
  • 它们应该是单独的随机密钥吗? (克隆回购时的过程是什么?)

2 个答案:

答案 0 :(得分:3)

由于您应该避免在源代码管理中存储私钥,我建议您将 config / secrets.sample.yml 添加到包含 secrets模板的存储库 em>喜欢:

development:
  secret_key_base:
  some_random_key:

test:
  secret_key_base:
  some_random_key:

production:
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
  secret_key_base: <%= ENV["SOME_RANDOM_KEY"] %>

然后你只需要给他们提供一个安全的方式(语音,纸片等)的价值。

有一篇有趣的博客文章,您可以阅读here有关如何部署应用程序的ENV变量的信息。

答案 1 :(得分:1)

您不需要共享secrets.yml密钥,您可以使用以下rake命令实际生成新的密钥:

rake secret

那应该输出一个128位的伪随机十六进制值,类似于:

b00dbff430b2c5596d10b3434ecd8a25515db481dccf818869a21d0c276ad159f00680aac38957ad57a73c9254754b32c42ef4fe2f76ee48d6e4ad8d4dc6a203

让每个研究开发团队成员为secrets.yml文件中的每个secret_key_base运行该命令。

如果是针对生产环境,则您需要将从rake secret获取的值设置为环境变量。