Environは、さまざまなソースから環境設定を管理するためのClojureライブラリです。 12ファクターアプリパターンに従うアプリケーションに適しています。
現在、Environは次の順序で解決された4つのソースをサポートしています。
.lein-env
ファイル.boot-env
classpathのファイル最初の2つのソースは、それぞれLein-EnvironとBoot-Environプラグインによって設定されており、手動で編集しないでください。
.lein-env
ファイルには、Leiningen Project Mapの:env
キーのコンテンツが入力されています。 .boot-env
ファイルにはenviron.boot/environ
Bootタスクが入力されます。
project.clj
に次の依存関係を含めます。cljファイル:
:dependencies [[environ " 1.2.0 " ]]
Leiningenプロジェクトマップから設定を描画できるようにする場合は、次のプラグインも必要です。
:plugins [[lein-environ " 1.2.0 " ]]
ブートツールチェーンを使用している場合は、ビルドパイプラインの設定を読み書きすることをお勧めします。 build.bootで、依存関係を追加します:
:dependencies '[[boot-environ " 1.2.0 " ]]
次に、環境ブートタスクが必要です。
( require '[environ.boot :refer [environ]])
データベース接続を必要とするアプリケーションがあるとしましょう。多くの場合、開発用、1つはテスト用、もう1つは生産用の3つの異なるデータベースが必要です。
key :database-url
のデータベース接続の詳細をenviron.core/env
マップから引くことができます。
( require '[environ.core :refer [env]])
( def database-url
( env :database-url ))
このキーの値は、いくつかの異なる方法で設定できます。開発中の最も一般的な方法は、Project Directoryでローカルprofiles.clj
ファイルを使用することです。このファイルには、標準project.clj
で指定されたプロファイルとマージされるプロファイルを備えたマップが含まれていますが、バージョン制御から締め出され、ローカル開発オプション用に予約できます。
{ :dev { :env { :database-url " jdbc:postgresql://localhost/dev " }}
:test { :env { :database-url " jdbc:postgresql://localhost/test " }}}
この場合、開発環境とテスト環境にデータベースURLを追加します。これは、 lein repl
実行するとDEVデータベースが使用され、 lein test
を実行すると、テストデータベースが使用されることを意味します。
profiles.clj
で定義されたプロファイルを置き換えるのではなく、 project.clj
で定義するプロファイルがproject.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 {}}
次に、 profiles.clj
の:profiles/dev
キーを使用します。clj。
project
名空間を備えたキーワードは、プロジェクトマップで調べられます。例えば:
{ :env { :app-version :project/version }}
これは、Leiningen Project Mapの:version
キーを検索します。 Lein-Pprintを使用して、完全なプロジェクトマップを表示できます。
ブートの場合、タスクの完全な柔軟性とパイプラインの構築があります。つまり、次のすべてが有効であることを意味します。
$ boot environ -e database-url=jdbc:postgresql://localhost/dev repl
( environ :env { :database-url " jdbc:postgresql://localhost/dev " })
後者のフォームは、カスタムパイプラインと「タスクオプション!」に含めることができます。
また、このタスクは、ファイルセットに.boot-env
ファイルを作成または更新します。これは、ブートテストのような独自のポッドを作成するタスクに役立ちます。
生産環境に展開すると、次のように環境変数を使用できます。
DATABASE_URL=jdbc:postgresql://localhost/prod java -jar standalone.jar
または、Javaシステムのプロパティを使用します。
java -Ddatabase.url=jdbc:postgresql://localhost/prod -jar standalone.jar
環境は自動的にキーを下ろし、文字「_」と「」を置き換えることに注意してください。と "-"。したがって、環境変数DATABASE_URL
とシステムプロパティdatabase.url
:database-url
重要-Environは、コンパイルされたUberjarから呼び出されたときにproject.clj
から構成設定をピックアップしません。したがって、 lein uberjar
で作成したコンパイルされたコードについては、シェル環境および/またはシステムプロパティを介して構成値を設定する必要があります。
Copyright©2020 James Reeves
Clojureと同じように、Eclipse Publicライセンスの下で配布されます。