beego.AppConfig.Stringデフォルト構成の値は取り出せません
今日、新しく開発された beegoはapp.confをデフォルトでロードします.beegoはapp.confの構成をデフォルトでロードするので、まずbeegoがいつデフォルト構成をロードするかを考えます.コードは起動時にデフォルト構成をロードすることが分かった.だから、私が使用する前に必ずデフォルトの構成をロードしました.だから考えを変えます. beegoデフォルトapp.confをロードするパスは次のとおりです.
beegoのデフォルトは、workPathまたはAppPathからデフォルトの構成を取得します.したがって、この2つのパスを印刷すると、対応するパスの下にapp.confが印刷されていない値はコンパイルされたバイナリファイルをappが存在するディレクトリの下に移動すればよい.一般的には
beego
プロジェクトを実行していると、beego.AppConfig.String
を使用して構成の値が取れないことがわかりました.解決策について説明します.func init() {
BConfig = newBConfig()
var err error
if AppPath, err = filepath.Abs(filepath.Dir(os.Args[0])); err != nil {
panic(err)
}
workPath, err := os.Getwd()
if err != nil {
panic(err)
}
appConfigPath = filepath.Join(workPath, "conf", "app.conf")
if !utils.FileExists(appConfigPath) {
appConfigPath = filepath.Join(AppPath, "conf", "app.conf")
if !utils.FileExists(appConfigPath) {
AppConfig = &beegoAppConfig{innerConfig: config.NewFakeConfig()}
return
}
}
if err = parseConfig(appConfigPath); err != nil {
panic(err)
}
if err = os.Chdir(AppPath); err != nil {
panic(err)
}
}
beegoのデフォルトは、workPathまたはAppPathからデフォルトの構成を取得します.したがって、この2つのパスを印刷すると、対応するパスの下にapp.confが印刷されていない値は
******/gomodule/bin
であり、デフォルトのパスはappの起動パスであることがわかります.デフォルトパラメータgo installを使用してコンパイルされたバイナリファイルは$GOPATH/bin
である.その考え方は簡単だ.$GOPATH/src/appname/
でよい.