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.jarOder 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.