我很高兴在Heroku上使用Rails,并且我可以调整Heroku应用程序的配置属性,而无需更改xyz.yml
并重新部署。
完全取消我的Rails应用程序中的Yaml配置文件会很好,并且尽可能地依赖于在ENV中存储配置。这符合12-factor config原则。
然而,在从基于Yaml的配置管理切换到基于Heroku / 12因子的配置管理方面存在一些权衡。
希望听到那些在私有应用程序中使用过12因素样式配置的人,以及他们如何在大量部署中管理大量配置变量。
谢谢!
答案 0 :(得分:10)
我通常使用的是Yaml使用ENV并提供默认值。例如,YAML可以很高兴地将ERB包括在你的ENV vars中:
foo:
var: ENV["MY_CONFIG"] || "default_value"
您只需要确保在阅读时加载带有ERB的Yaml:
YAML.load(ERB.new(File.read("#{Rails.root}/config/app_config.yml")).result)
通过这样做,您的代码在开发中工作正常,但也允许您在环境中设置配置变量。
答案 1 :(得分:4)
使用一些简单的shell脚本可以完成相对简单的操作,通过heroku config或heroku release:info v99迭代现有变量,然后设置heroku config:set k = v --app
但如果它的问题/痛苦/摩擦可能你的env var配置中有太多内容。
答案 2 :(得分:0)
有点迟到的答案,但我相信这正是你要找的。 p>
我开发了一个名为settei的gem,允许您使用YAML文件来配置应用程序。但是,gem会在部署期间将YAML文件序列化为一个环境变量。这样就可以实现两全其美:YAML易于管理/创建衍生环境,ENV符合12因素合规。