Environ은 여러 다른 소스의 환경 설정을 관리하기위한 Clojure 라이브러리입니다. 12 팩터 앱 패턴에 따른 응용 프로그램에 적합합니다.
현재 Environ은 다음 순서로 해결 된 네 가지 출처를 지원합니다.
.lein-env
파일.boot-env
파일처음 두 소스는 각각 Lein-Environ 및 Boot-Environ 플러그인에 의해 설정되며 수동으로 편집해서는 안됩니다.
.lein-env
파일은 Leiningen 프로젝트 맵에서 : :env
키의 내용으로 채워집니다. .boot-env
파일은 environ.boot/environ
Boot 작업에 의해 채워집니다.
project.clj
파일에 다음 종속성을 포함하십시오.
:dependencies [[environ " 1.2.0 " ]]
Leiningen 프로젝트 맵에서 설정을 그릴 수 있으려면 다음 플러그인도 필요합니다.
:plugins [[lein-environ " 1.2.0 " ]]
부팅 도구 체인을 사용하는 경우 빌드 파이프 라인에서 설정을 읽고 쓸 수 있습니다. build.boot 에서 종속성을 추가하십시오.
:dependencies '[[boot-environ " 1.2.0 " ]]
그런 다음 Environ Boot 작업이 필요합니다.
( require '[environ.boot :refer [environ]])
데이터베이스 연결이 필요한 응용 프로그램이 있다고 가정 해 봅시다. 종종 개발 용, 하나는 테스트 용 및 생산 용 세 가지 데이터베이스가 필요합니다.
environ.core/env
Map의 키에서 데이터베이스 연결 :database-url
정보를 가져올 수 있습니다.
( require '[environ.core :refer [env]])
( def database-url
( env :database-url ))
이 키의 값은 여러 가지 방법으로 설정할 수 있습니다. 개발 중 가장 일반적인 방법은 프로젝트 디렉토리에서 로컬 profiles.clj
파일을 사용하는 것입니다. 이 파일에는 Standard project.clj
에 지정된 프로파일과 병합 될 프로파일이 포함 된 맵이 포함되어 있지만 버전 제어를 중단하고 로컬 개발 옵션을 위해 예약 할 수 있습니다.
{ :dev { :env { :database-url " jdbc:postgresql://localhost/dev " }}
:test { :env { :database-url " jdbc:postgresql://localhost/test " }}}
이 경우 DEV 및 테스트 환경에 대한 데이터베이스 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/dev
키를 사용하십시오 profiles.clj
.
project
네임 스페이스가있는 키워드가 프로젝트 맵에서 찾아옵니다. 예를 들어:
{ :env { :app-version :project/version }}
Leiningen 프로젝트지도에서 :version
키를 찾습니다. Lein-Pprint를 사용하여 전체 프로젝트 맵을 볼 수 있습니다.
부팅의 경우 작업과 파이프 라인의 전체 유연성이 있으므로 다음이 모두 유효합니다.
$ boot environ -e database-url=jdbc:postgresql://localhost/dev repl
( environ :env { :database-url " jdbc:postgresql://localhost/dev " })
후자의 형식은 사용자 정의 파이프 라인 및 '작업 옵션!'에 포함될 수 있습니다.
이 작업은 또한 파일 세트에서 .boot-env
파일을 생성하거나 업데이트합니다. 이것은 부트 테스트와 같은 고유 한 포드를 만드는 작업에 유용하며 Environ Vars의 변경 사항이 보이지 않습니다.
생산 환경에 배치하면 다음과 같은 환경 변수를 사용할 수 있습니다.
DATABASE_URL=jdbc:postgresql://localhost/prod java -jar standalone.jar
또는 Java 시스템 속성 사용 :
java -Ddatabase.url=jdbc:postgresql://localhost/prod -jar standalone.jar
Environ은 자동으로 키를 낮추고 "_"및 ""문자를 대체합니다. 와 함께 "-". 환경 변수 DATABASE_URL
및 System Property database.url
은 모두 동일한 키워드 인 :database-url
로 변환됩니다.
중요 - Environ은 컴파일 된 Uberjar에서 호출 할 때 project.clj
에서 구성 설정을 선택하지 않습니다. 따라서 lein uberjar
로 생성 한 컴파일 된 코드의 경우 쉘 환경 및/또는 시스템 속성을 통해 구성 값을 설정하려고합니다.
저작권 © 2020 James Reeves
Clojure와 동일한 Eclipse Public 라이센스에 따라 배포됩니다.