app.conf旁边的外部配置&;revel go框架的环境变量
我已经阅读了有关自定义配置和环境变量的revel。然而,我找不到使用附加外部配置和app.conf的方法 我的目标是实现内部app.conf之外的外部配置文件。假设创建一个名为example的产品,example产品使用app.conf(不向最终用户公开)保持其合理的默认值,而不是通过example.conf(默认位置可以是/etc/example/example.conf)为产品用户公开配置属性 例如:app.conf中的http配置字段app.conf旁边的外部配置&;revel go框架的环境变量,go,revel,Go,Revel,我已经阅读了有关自定义配置和环境变量的revel。然而,我找不到使用附加外部配置和app.conf的方法 我的目标是实现内部app.conf之外的外部配置文件。假设创建一个名为example的产品,example产品使用app.conf(不向最终用户公开)保持其合理的默认值,而不是通过example.conf(默认位置可以是/etc/example/example.conf)为产品用户公开配置属性 例如:app.conf中的http配置字段 http.addr = http.port = 900
http.addr =
http.port = 9000
将其扩展到example.conf
http.addr =
http.port = 9000
[database]
host = "localhost"
port = 8080
user = "username"
password = "password"
# etc...
然后,我在应用程序启动期间阅读example.conf,use values还应用app.conf顶部的值(覆盖)。最后狂欢服务器启动
如何使用revel go framework实现这一目标?看来您正在反对app.conf的设计。它已经设置为分段,例如,所有这些都在单个app.conf文件中
[dev]
results.pretty = true
watch = true
http.addr = 192.168.1.2
[test]
results.pretty = true
watch = true
http.addr = 192.168.1.22
[prod]
results.pretty = false
watch = false
http.addr = 192.168.1.100
通过使用三个不同的命令行选项,可以启动三个不同的场景
revel run bitbucket.org/mycorp/my-app dev
revel run bitbucket.org/mycorp/my-app test
revel run bitbucket.org/mycorp/my-app prod
我知道这并不完全是你的目标,但你可以得到类似的结果。在github.com/revel/revel/revel.go在第152行你有类似的结果
Config,err=LoadConfig(“app.conf”)
也许你可以试着用这个来修改它
if len(os.Getenv("SOME ENV VAR")) > 0 {
Config, err = LoadConfig("path/to/your/example.conf")
} else {
Config, err = LoadConfig("app.conf")
}
您只需要在prod服务器上设置env var
这样您就不会使用app.conf,而是使用example.conf。谢谢,我已经从文档中了解了这个功能。然而,正如前面所述,我的目标不是为最终用户公开app.conf,而是将example.conf作为产品配置。有没有解决这个问题的线索/方法?@jeevatkm告诉我你对此有何看法?谢谢,我很高兴通过框架支持的一些接口扩展框架,所以当新版本出现时,它将与之兼容。否则,我可能不得不维护我的revel代码版本,并将其与每个版本同步。我一直走在那条路上,不是好玩的事,而是通过OnAppStart。你知道配置覆盖的钩子吗?