Environ ist eine Clojure -Bibliothek zur Verwaltung von Umgebungseinstellungen aus verschiedenen Quellen. Es funktioniert gut für Anwendungen, die dem 12 -Faktor -App -Muster folgen.
Derzeit unterstützt Environ vier Quellen, die in der folgenden Reihenfolge aufgelöst wurden:
.lein-env
Datei im Projektverzeichnis.boot-env
Datei auf dem KlassenpfadDie ersten beiden Quellen werden von den Plugins von Lein-Umviron und Boot-EniCon festgelegt und sollten nicht manuell bearbeitet werden.
Die .lein-env
Datei ist mit dem Inhalt des :env
Schlüssels in der LININGEN-Projektkarte besiedelt. Die .boot-env
Datei wird von der environ.boot/environ
Umgebungsstart gefüllt.
Fügen Sie die folgende Abhängigkeit in Ihr project.clj
ein. CLJ -Datei:
:dependencies [[environ " 1.2.0 " ]]
Wenn Sie Einstellungen von der LININGEN -Projektkarte zeichnen möchten, benötigen Sie auch das folgende Plugin:
:plugins [[lein-environ " 1.2.0 " ]]
Wenn Sie die Boot Toolchain verwenden, möchten Sie möglicherweise Einstellungen aus Build -Pipelines lesen und schreiben. In Build.boot fügen Sie die Abhängigkeit hinzu:
:dependencies '[[boot-environ " 1.2.0 " ]]
Erfordern Sie dann die Umgebungsstartaufgabe.
( require '[environ.boot :refer [environ]])
Angenommen, Sie haben eine Anwendung, für die eine Datenbankverbindung erforderlich ist. Oft benötigen Sie drei verschiedene Datenbanken, eine für die Entwicklung, eine zum Testen und eine für die Produktion.
Ziehen wir die Datenbankverbindungsdetails aus dem Schlüssel :database-url
auf der environ.core/env
Karte.
( require '[environ.core :refer [env]])
( def database-url
( env :database-url ))
Der Wert dieses Schlüssels kann auf verschiedene Arten festgelegt werden. Der häufigste Weg während der Entwicklung ist die Verwendung einer lokalen profiles.clj
-Datei in Ihrem Projektverzeichnis. Diese Datei enthält eine Karte mit Profilen, die mit den im Standard project.clj
angegebenen Profilen zusammengeführt werden. CLJ, kann jedoch außerhalb der Versionskontrolle gehalten und für lokale Entwicklungsoptionen reserviert werden.
{ :dev { :env { :database-url " jdbc:postgresql://localhost/dev " }}
:test { :env { :database-url " jdbc:postgresql://localhost/test " }}}
In diesem Fall fügen wir eine Datenbank -URL für die Entwicklungs- und Testumgebungen hinzu. Dies bedeutet, dass die Dev -Datenbank verwendet wird, wenn Sie lein repl
ausführen, und wenn Sie lein test
ausführen, wird die Testdatenbank verwendet.
Diese Profile, die Sie in profiles.clj
definieren.clj, werden zusammengeführt, anstatt Profile zu ersetzen, die in project.clj
definiert sind. CLJ kann ein zusammengesetztes Profil in project.clj
erstellt werden.clj:
:profiles { :dev [ :project/dev :profiles/dev ]
:test [ :project/test :profiles/test ]
; ; only edit :profiles/* in profiles.clj
:profiles/dev {}
:profiles/test {}
:project/dev { :source-paths [ " src " " tool-src " ]
:dependencies [[midje " 1.6.3 " ]]
:plugins [[lein-auto " 0.1.3 " ]]}
:project/test {}}
Und verwenden Sie dann den Taste :profiles/dev
in Ihren profiles.clj
.
Schlüsselwörter mit einem project
werden in der Projektkarte nachgeschlagen. Zum Beispiel:
{ :env { :app-version :project/version }}
Dies schaut auf :version
in der LININGEN -Projektkarte. Sie können die vollständige Projektkarte mithilfe von Lein-Pprint anzeigen.
Im Fall von Stiefel haben Sie die volle Flexibilität von Aufgaben und Erstellung von Pipelines, was bedeutet, dass alle folgenden Aussagen gültig sind:
$ boot environ -e database-url=jdbc:postgresql://localhost/dev repl
( environ :env { :database-url " jdbc:postgresql://localhost/dev " })
Die letztere Form kann in benutzerdefinierte Pipelines und "Task-Options!" Enthalten sein.
Die Aufgabe erstellt oder aktualisiert auch eine .boot-env
Datei im Dateisatz. Dies ist nützlich für Aufgaben, die ihre eigenen Pods wie Boot-Test erstellen, bei denen Änderungen in den Umgebungsvolen nicht angezeigt werden.
Wenn Sie sich für eine Produktionsumgebung einsetzen, können Sie Umgebungsvariablen wie SO nutzen:
DATABASE_URL=jdbc:postgresql://localhost/prod java -jar standalone.jar
Oder verwenden Sie Java -Systemeigenschaften:
java -Ddatabase.url=jdbc:postgresql://localhost/prod -jar standalone.jar
Beachten Sie, dass Environ die Schlüssel automatisch senkt und die Zeichen "_" und "" ersetzt. mit "-". Die DATABASE_URL
und die database.url
werden daher beide in dasselbe Schlüsselwort konvertiert :database-url
.
WICHTIG - Umgebung nimmt keine Konfigurationseinstellungen aus dem project.clj
auf, wenn er aus einem kompilierten Uberjar aufgerufen wird. Für jeden kompilierten Code, den Sie mit lein uberjar
erstellen, möchten Sie Ihre Konfigurationswerte über die Shell -Umgebung und/oder die Systemeigenschaften festlegen.
Copyright © 2020 James Reeves
Verteilt unter der Eclipse Public Lizenz, genau wie Clojure.