app.conf旁边的外部配置&;revel go框架的环境变量

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

我已经阅读了有关自定义配置和环境变量的revel。然而,我找不到使用附加外部配置和app.conf的方法

我的目标是实现内部app.conf之外的外部配置文件。假设创建一个名为example的产品,example产品使用app.conf(不向最终用户公开)保持其合理的默认值,而不是通过example.conf(默认位置可以是/etc/example/example.conf)为产品用户公开配置属性

例如:app.conf中的http配置字段

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。你知道配置覆盖的钩子吗?