使用Figaro在生产和开发中同步令牌

时间:2015-05-10 07:09:16

标签: sync figaro-ruby

我正在通过Rails练习处理Figaro并在生产和开发环境中同步令牌,我不确定我所做的是否已经完成了本练习的目的。具体来说,它说要运行 rake 秘密来生成令牌,然后是 heroku config:set SECRET_KEY_BASE = thegeneratedtoken 将该令牌设置为ENV生产变量。我已经完成了这些步骤。

然后我被要求将 SECRET_KEY_BASE 添加到我已经完成的 application.yml 文件中,然后使用Figaro同步生产中的令牌然后将开发键设置为与 secrets.yml 中的生产键相同的ENV存储令牌。

所以我的secrets.yml文件看起来像这样:

secrets.yml

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

虽然application.yml文件实际上包含SECRET_KEY_BASE之后生成的令牌:

这看起来我已经完成了所有必要的任务吗?我想我大部分都是在“使用费加罗来同步令牌......”这部分练习中。我不确定我是否需要在这里运行一些命令,或者他们只是说将令牌添加到application.yml文件是同步环境。

1 个答案:

答案 0 :(得分:1)

如果你可以在这里分享这个练习(这是一个在线教程吗?)会很酷,所以我可以更准确地回答你的问题。

如果你跑

heroku config -a YOUR_HEROKU_APP

并在输出中看到 SECRET_KEY_BASE ,它与您从本地开发中同步的内容相匹配,这意味着您设法同步了您的配置。

figaro's github page上很好地解释了关于secrets.yml和figaro的令人困惑的部分。

你真正需要figaro,在本地,是从 application.yml 文件中读取配置并将其添加到ENV对象,以便你的 secrets.yml 文件可以安全地访问秘密(您可以安全地将 secrets.yml 提交到您的仓库,但仅在本地保留 application.yml (理想情况下添加到 .gitignore < /强>))

现在,Heroku从ENV加载所有配置,您只需登录并复制和粘贴数据,或使用命令行设置配置密钥。

此命令

heroku config:set SECRET_KEY_BASE=thegeneratedtoken

正是如此。现在这个用于同步数据的figaro命令:

figaro heroku:set -e production

实际上只是一个包装脚本,它将覆盖 application.yml 中的所有键(在production:下未编码或作用域)并将运行(对于每个键):

heroku config:set PROD_KEY_1=VALUE_PROD_KEY_1

我希望这有助于最初的混乱: - )