1

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

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

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

秘密.yml

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

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

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

4

1 回答 1

1

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

如果你跑

heroku config -a YOUR_HEROKU_APP

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

在figaro 的 github 页面上很好地解释了 secrets.yml 与 figaro 上令人困惑的部分。

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

现在,Heroku 从 加载所有配置ENV,您所要做的就是登录并复制和粘贴您的数据,或者使用命令行来设置您的配置键。

这个命令

heroku config:set SECRET_KEY_BASE=thegeneratedtoken

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

figaro heroku:set -e production

实际上只是一个包装脚本,它将遍历application.yml中的所有键(无作用域或作用域 under production:)并将运行(对于每个键):

heroku config:set PROD_KEY_1=VALUE_PROD_KEY_1

我希望这有助于解决最初的困惑:-)

于 2015-07-21T04:16:38.827 回答