как установить мой конфигурационный файл в Viper присутствует за пределами моего рабочего хранилища - PullRequest
0 голосов
/ 22 декабря 2019

Мне нужно указать путь к моему файлу конфигурации. Проблема, например, в том, что мой конфигурационный файл находится в my_app/config, но мой рабочий каталог находится в my_app/workingdir, и я не должен устанавливать абсолютный путь или путь из моего рабочего каталога, потому что в производственном процессе абсолютный путь и рабочий каталог будут меняться,Я знаю, что для теста я могу указать путь из своего кода, но мне нужен более чистый путь.

    workingdir, err := os.Getwd()
    if err != nil {
        logger.Error(err)
    }
    viper.SetConfigFile(workingdir + "/config/local.yaml")

Ответы [ 3 ]

1 голос
/ 23 декабря 2019

Не храните ваш конфигурационный файл вне рабочего каталога, всегда создавайте новую папку в вашем основном пакете, например, conf, и помещайте в нее свой файл.

Итак, структура каталога будет

my_app / conf / config.yml

Затем установите файл конфигурации в viper через функцию init вашего main.go

//main.go
func init() {
  setUpViper()
}

func setUpViper() {
  viper.AddConfigPath("./conf")
  viper.SetConfigName("config")
}
0 голосов
/ 22 декабря 2019

Используйте «..» для указания родителя каталога.

Поскольку относительные пути имеют корни в рабочем каталоге, нет необходимости получать рабочий каталог в коде приложения.

Используйте следующее для указания пути к файлу конфигурации:

 viper.SetConfigFile("../config/local.yaml")
0 голосов
/ 22 декабря 2019

Вы можете использовать .. для перехода в родительский каталог, а затем оттуда перейти в папку config.

workingdir, err := os.Getwd()
if err != nil {
    logger.Error(err)
}
viper.SetConfigFile(workingdir + "/../config/local.yaml")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...