2017-02-15 2 views
2

docs сказать, что я могу получить доступ к переменным окружения, как это:Роль `` при доступе к переменным окружения в HOCON файлов

database_name = "${?DB_NAME}" 

Где DB_NAME является переменной окружения. Должен ли я поставить вопросительный знак ? или это значит, чтобы предотвратить сбой, если он не существует?

Кроме того, разрешено ли ссылаться на переменную в файле до его объявления?

foo = "hello-${bar}" 
bar = "baz" 
+0

Лучше задать два отдельных вопроса, по одному для каждой из ваших проблем. –

ответ

4

1- ? означает необязательный, поэтому, если переменная среды не существует во время выполнения вся строка будет игнорироваться, как если бы оно не существует в первую очередь. Поэтому используйте его, когда вы хотите опциональное переопределение.

См. Optional Env Vars section of the docs для получения дополнительной информации.

Также обратите внимание, что ? работает для всех подстановок, а не только для env vars.

2- Да, вы можете ссылаться на переменную, которая определена позже в файле конфигурации (прямая ссылка). Пока существует значение и нет цикла (круговая зависимость), замена будет выполнена успешно.

Подумайте об этом так: сначала весь файл будет проанализирован во время выполнения, а значение литералов будет привязано к их варам, а затем замены будут выполнены, поэтому порядок не имеет значения.

+0

так что я должен использовать? с переменными окружающей среды? если нет, как я могу обращаться к ним в обычном режиме? – Blankman

+0

Нет, вам не нужно их использовать. Только если вы хотите 'optional overriding'. Нормальным вариантом использования будет 'myVar = $ {MY_ENV_VAR}'. –

+0

Я вижу, просто смущенно, как он знает, что это ENV VAR, а затем блокировка замков? :) – Blankman

Смежные вопросы