使用Rails secrets.yml的逐步说明,在部署到Heroku时不会将密钥暴露给公共仓库
我使用的是Rails 4.1.1和ruby 2.0.0
我目前忽略了我的secretts.yml文件到我的gitign for github。
secrets.yml
development: secret_key_base: numb3r57ndl3tt3r5 test: secret_key_base: differentnumbersandletters13531515 production: 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指南编写者 )
谢谢! =]
如果使用此键<%= ENV["SECRET_KEY_BASE'] %>
在本地计算机上,您可以在shell中设置环境变量,例如(bash或zsh)
export SECRET_KEY_BASE="yourkeybasehere"
并模拟您在生产(但在您的本地机器)上运行
RAILS_ENV=production rails s
但是,在Heroku上部署,您可以使用他们所谓的配置变量,通过运行heroku config:set
命令为您的应用程序。
heroku config:set SECRET_KEY_BASE=yourkeybasehere
然后Rails应用程序将此配置var填充到secret.yml中
production: secret_key_base: yourkeybasehere
希望这能解释您需要了解的内容。
但是,如果你想玩和测试。 一种选择是尝试编辑app / views / layouts / application.html.erb文件并放置要显示的config var,例如USERNAME config var
<%= ENV['USERNAME'] %> <%= yield %>
然后部署到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
这是一个(希望很简单)一步一步的指南FOR HEROKU,应该在将文件(secrets.yml)推送到GitHub或其他主机之前执行。
*我不是这方面的专家,但这对我来说效果很好,似乎是一个很好的解决方案。 它结合了这个问题的答案信息以及这个问题的答案( 你如何在rails中保密秘密.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=
,其中应该从test: secret_key_base:
复制并粘贴heroku config:set SECRET_KEY_BASE_TEST=
,它位于secrets_backup.yml
6)在终端类型heroku config:set SECRET_KEY_BASE_DEV=
,其中
应该从development: secret_key_base:
复制和粘贴development: secret_key_base:
,它位于secrets_backup.yml
7)我的secrets.yml
文件已经有了SECRET_KEY_BASE而不是实际的密钥,所以我怀疑你的也是。 但如果没有,请将SECRET_KEY_BASE变量设置为上面设置的其他两个变量。
8)将您的仓库推送到GitHub和Heroku
9)微笑因为你是GOAT并炫耀你的甜蜜网站!
- 如何在Heroku中更改列类型?
- Rails Heroku服务器回形针Amazon S3 – AWS :: S3 :: Errors :: RequestTimeout
- 在达到最小订单后处理订单 – Rails 3
- PGError:错误:关系“用户”的列“电子邮件”已存在
- 在没有自定义域的情况下,子域会话在Heroku上的Rails 2.3和Rails 3中不起作用?
- Heroku运行rake db:迁移错误,“没有这样的文件加载 – bundler / setup”
- rake assets:precompile throws Sass :: SyntaxError:“* /”之后的CSS无效
- Rails 3.1 Asset Pipeline – 关闭Heroku上的图像资产指纹识别?
- 调试Heroku应用程序时如何避免大量提交