1

使用 Rails 4.1.1,我创建了一个项目。启动并运行,现在我想与我的研究开发团队分享它。当然, .gitignore 会secrets.yml从源代码管理中隐藏文件,但是如果没有自己的secrets.yml文件版本,它们的版本将无法运行,会出现以下错误:

处理请求时出现意外错误:缺少secret_key_base“开发”环境,请在 `config/secrets.yml 中设置此值

  • 我们需要共享秘密令牌吗?(因此只需将其复制并粘贴到他们的本地机器上)
  • 它们应该是单独的随机键吗?(克隆 repo 的过程是什么?)
4

2 回答 2

3

由于您应该避免将私钥存储在源代码管理中,因此我建议您改为将config/secrets.sample.yml添加到您的存储库中,其中包含一个用于秘密的模板,例如:

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"] %>

然后你只需要给他们值以安全的方式填写(语音、纸片等)

您可以在此处阅读一篇有趣的博客文章,了解如何部署应用程序的 ENV 变量。

于 2014-07-07T19:25:22.093 回答
1

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

rake secret

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

b00dbff430b2c5596d10b3434ecd8a25515db481dccf818869a21d0c276ad159f00680aac38957ad57a73c9254754b32c42ef4fe2f76ee48d6e4ad8d4dc6a203

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


如果这是用于生产环境,您需要将您从中获得的值设置rake secret为环境变量。

于 2015-10-06T03:18:18.500 回答