2017-02-15 2 views
2

Die docs sagen, dass ich Umgebungsvariablen wie folgt zugreifen können:Rolle der ``, wenn die Umgebungsvariablen in HOCON Zugriff auf Dateien

database_name = "${?DB_NAME}" 

Wo DB_NAME eine Umgebungsvariable ist. Muss ich das Fragezeichen setzen ? oder ist das dort, um einen Unfall zu verhindern, wenn es nicht existiert?

Darf man auch auf eine Variable in einer Datei verweisen, bevor sie deklariert wird?

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

Besser zwei Fragen zu stellen, eine für jedes Ihrer Anliegen. –

Antwort

4

1- ? bedeutet optional, so dass, wenn der Umgebungsvariable in der Laufzeit der ganze Linie existiert nicht ignoriert werden, als ob es nicht an erster Stelle existiert hat. Verwenden Sie es also, wenn Sie ein optionales Überschreiben wünschen.

Weitere Informationen finden Sie unter Optional Env Vars section of the docs.

Beachten Sie auch, dass ? für alle Substitutionen und nicht nur für env vars funktioniert.

2- Ja, Sie können auf eine Variable verweisen, die später in der Konfigurationsdatei definiert wird (Vorwärtsreferenzierung). Solange der Wert existiert und kein Zyklus vorhanden ist (Kreisabhängigkeit), wird die Substitution erfolgreich durchgeführt.

Denken Sie daran: Zuerst wird die ganze Datei zur Laufzeit geparst und der Wert der Literale wird an ihre Variablen gebunden, und dann werden die Ersetzungen durchgeführt, also spielt die Reihenfolge keine Rolle.

+0

muss ich also verwenden? mit Umgebungsvariablen? wenn nicht, wie greife ich normalerweise auf sie zu? – Blankman

+0

Nein, Sie müssen sie nicht verwenden. Nur wenn Sie ein optionales Überschreiben wünschen. Der normale Anwendungsfall wäre 'myVar = $ {MY_ENV_VAR}'. –

+0

Ich sehe, nur verwirrt, wie es weiß, ist es ein ENV VAR dann, Feststelltaste? :) – Blankman

Verwandte Themen