5

我正在使用 Rails 4.1.1 和 ruby​​ 2.0.0

我目前已将我的 secrets.yml 文件忽略到我的 gitignore for github。

秘密.yml

development:
  secret_key_base: numb3r57ndl3tt3r5

test:
  secret_key_base: differentnumbersandletters13531515

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

如果这个生产密钥是动态的,它是从哪里读取的?我们在哪里提供这些信息?这些信息如何在不访问 github 的情况下到达 heroku?

我的 heroku 应用程序设置中已经有一个密钥环境变量。我认为它是在我使用 heroku_secrets gem https://github.com/alexpeattie/heroku_secrets运行 rake 评论时创建的rake heroku:secrets RAILS_ENV=production

有人可以解释概念步骤,以及如何在不向公众公开密钥的情况下正确使用 secrets.yml 的实际步骤吗?

例如,如果您还可以为不同的 API 添加另一个密钥,那也将不胜感激。

我想了解解释中的步骤中发生了什么,而不是像“做这个,做这个,做这个”之类的东西。另外,如果有代码,请指定它应该放在哪个文件中,而不是仅仅给出代码,并假设读者仅根据代码就知道它的去向(严厉地看 heroku 指南作者

谢谢!=]

4

2 回答 2

5

如果您使用此密钥<%= ENV["SECRET_KEY_BASE'] %>

在本地计算机上,您可以在 shell 中设置环境变量,例如(bash 或 zsh)

export SECRET_KEY_BASE="yourkeybasehere"

并模拟您在生产环境(但在本地机器上)运行,例如

RAILS_ENV=production rails s

heroku config:set但是,在 Heroku 上部署时,您可以通过为您的应用程序运行命令来使用他们所谓的配置变量。

heroku config:set SECRET_KEY_BASE=yourkeybasehere

然后 Rails 应用程序会将这个配置变量填充到 secret.yml

production:
  secret_key_base: yourkeybasehere

希望这能解释你需要理解的东西。

不过,如果您想玩和测试。一种选择是尝试编辑您的 app/views/layouts/application.html.erb 文件并放置您要显示的配置变量,例如 USERNAME config var

<!DOCTYPE html>
<html>
<head>
  <title><%= ENV['USERNAME'] %></title>
</head>
<body>

<%= yield %>

</body>
</html>

然后部署到heroku并运行

heroku config:set USERNAME=gwho

您应该在页面标题处看到“gwho”。

有关 Heroku 配置变量的更多详细信息:https ://devcenter.heroku.com/articles/config-vars

有关 Rails 4.1 secrets.yml 的更多详细信息:http: //edgeguides.rubyonrails.org/4_1_release_notes.html#config/secrets.yml

于 2014-07-29T02:46:30.163 回答
0

这是一个(希望是简单的)HEROKU 分步指南,应该在将文件(secrets.yml)推送到 GitHub 或其他主机之前执行。

*我不是这个主题的专家,但这对我来说效果很好,似乎是一个很好的解决方案。它结合了这个问题的答案以及这个问题的答案(你如何在 rails 中保持 secrets.yml 的秘密?)提供一个简单的指南:)

1) 将 secrets.yml 复制到另一个名为 secrets_backup.yml 的文件中

您现在应该有两个与 secrets.yml 内容相同的文件

2)添加secrets_backup.yml到您的 .gitignore

3)将文本更改secrets.yml为以下内容

development:
  secret_key_base: <%= ENV["SECRET_KEY_BASE_DEV"] %>
test:
  secret_key_base: <%= ENV["SECRET_KEY_BASE_TEST"] %>
production:
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>

4)cd在命令行上到你的rails项目文件夹

5)在终端类型heroku config:set SECRET_KEY_BASE_TEST=<pasted key>中,<pasted key>应从其中复制粘贴到test: secret_key_base:<key>哪里secrets_backup.yml

6)在终端类型heroku config:set SECRET_KEY_BASE_DEV=<pasted key>中,<pasted key>应从其中复制粘贴到development: secret_key_base:<key>哪里secrets_backup.yml

7)我的secrets.yml文件已经有 SECRET_KEY_BASE 而不是实际的密钥,所以我怀疑你的也有。但如果没有,请将 SECRET_KEY_BASE 变量设置为上面设置的其他两个变量。

8) 将你的 repo 推送到 GitHub 和 Heroku

9)微笑,因为你是山羊,炫耀你甜蜜的网站!

于 2017-04-04T04:00:01.340 回答