HOCON не заменяет переменные окружения

Я прочитал документацию о возврате к переменным среды по адресу https://github.com/typesafehub/config/blob/master/HOCON.md#substitution-fallback-to-environment-variables. Насколько я понял, он подхватит любые envars. Так, например, если из оболочки я смог выполнить echo $HOSTNAME и увидеть непустой ответ, то HOCON также должен это сделать.

В моем application.conf у меня есть строка

akka.remote.netty.tcp.hostname = ${HOSTNAME}

Однако мое приложение недовольно этим и не запускается.

/conf/application.conf: 9: Could not resolve substitution to a value:  ${HOSTNAME}

Это проблема пользователя? Проблема с оболочкой? Я могу войти в систему как пользователь и повторить $HOSTNAME

Отметить этот scala и akka, так как эта пользовательская база, вероятно, имеет наибольшее влияние на HOCON.


person bearrito    schedule 15.04.2015    source источник


Ответы (3)


это выстрел в темноту, но вы используете более старую версию typesafe-config? может быть, это более новая функция? эта функция, похоже, рекламируется, как вы описываете, но если вы используете typesafe-config как временную зависимость (скажем, от akka), возможно, вы получаете более старую версию.

что произойдет, если вы удалите подстановку в файле .conf (чтобы синтаксический анализ прошел успешно), а затем распечатаете содержимое ConfigFactory.systemEnvironment()? для справки: http://typesafehub.github.io/config/latest/api/com/typesafe/config/ConfigFactory.html#systemEnvironment--

person Michael Frank    schedule 15.04.2015

Причина, по которой HOCON не получает envar, заключается в том, что мое приложение работает как служба Linux (Centos 6.5), которая очищает большинство переменных среды.

См. https://unix.stackexchange.com/questions/44370/how-to-make-unix-service-see-environment-variables для соответствующего описания проблемы

person bearrito    schedule 16.04.2015

HOSTNAME не является переменной среды. Это внутренняя переменная bash. См. https://superuser.com/questions/132489/hostname-environment-variable-on-linux для более подробной информации.

person Will Sargent    schedule 11.02.2016