我想在我的一个开源 Rails 应用程序(v 3.2.12)上安装 New Relic。我不想在回购中有许可证密钥。我想用ENV之类的东西加载它。
默认情况下加载到newrelic.yml
文件中。
该 YAML 文件在哪里加载?我想我可以手动将它与从 ENV 哈希加载许可证的哈希合并。
关于如何做到这一点的任何提示?
我想在我的一个开源 Rails 应用程序(v 3.2.12)上安装 New Relic。我不想在回购中有许可证密钥。我想用ENV之类的东西加载它。
默认情况下加载到newrelic.yml
文件中。
该 YAML 文件在哪里加载?我想我可以手动将它与从 ENV 哈希加载许可证的哈希合并。
关于如何做到这一点的任何提示?
我使用Figaro gem来处理带有环境变量的密钥ENV
,类似于你。对于 New Relic,我有:
config/application.yml ( .gitignore
d 并且不推送到源代码管理)
# ...
NEW_RELIC_LICENSE_KEY: {{MY_KEY}}
然后在config/newrelic.yml中引用:
# ...
license_key: <%= ENV['NEW_RELIC_LICENSE_KEY'] %>
一个名为config/application.example.yml的文件被推送到源代码存储库,其中包含将您自己的许可证密钥放入的说明:
配置/应用程序.example.yml
# ...
NEW_RELIC_LICENSE_KEY: # put your license key here
另请参阅此 StackOverflow Q&A 以了解更多详细信息:
应从 Ruby on Rails 中的公共源代码控制中删除哪些内容?
我在 IRC 上得到了一个有用的答案。newrelic.yml
是 erb 插值的。这意味着我可以添加<%= ENV["NEWRELIC"] %>
到 yml 文件中。
对以上答案是肯定的。另外,如果你在Heroku上。安装 NewRelic Addon 后,您可以下载newrelic.yml
文件并更改
license_key:
为:
license_key: <%= ENV['NEW_RELIC_LICENSE_KEY']%>
这将使用 NewRelic 插件设置的NEW_RELIC_LICENSE_KEY 环境变量
这不一定能回答您所问的确切问题,但这可能会解决您的最终目标。
通常对于这种情况,我将 newrelic.yml 文件添加到 .gitignore,然后创建一个 newrelic.yml.example,其中填写了所有非敏感字段和密钥的占位符。
通过这种方式,我可以将其添加到我的 newrelic.yml 文件中进行开发,并且还可以签入模板以供其他人使用。