2012-12-31 2 views
11

저는 빌드 및 배포를 위해 leiningen 2를 사용하여 clojure 웹 응용 프로그램을 작성하고 있습니다. 그것은 매우 바닐라 webapp이야, 나는 compojure, 반지, 그리고 린 - 콩나무를 사용하고 있습니다. 내 응용 프로그램은 데이터베이스 자격 증명과 S3 자격 증명을 모두 사용해야하며 내 응용 프로그램에 저장하고 액세스하는 가장 좋은 방법은 확실치 않습니다.데이터베이스 자격 증명 및 계정

leiningen 2를 사용하여 데이터베이스 자격 증명과 같은 중요한 정보를 처리해야하는 일반적인 방법은 무엇입니까?

탄력있는 콩팥 껍질에 환경 변수를 설정할 수는 있지만 가능한 경우 해당 경로를 피하고 싶습니다.

답변

9

두 가지 방법으로 그들을 읽는 전달합니다. 하나는 환경 변수를 사용하는 것인데, 이는 모든 설정 값이 문자열이고 임의의 중첩이 필요하지 않은 경우에 유용합니다. 가장 좋은 방법은 다음과 같습니다. Environ : https://github.com/weavejester/environ

다른 좋은 옵션은 클래스 경로에서 Clojure 데이터 파일을 읽는 것입니다. dev-resources dir을 사용하여 dev config 설정을 프로젝트에 체크인하고 배치 도구를 사용하여 클래스 경로에 프로덕션 구성을 배치 할 수 있습니다.

https://github.com/bbbates/confijulate : -이 패턴을 구현하기 위해 만든 라이브러리를 https://github.com/sonian/carica

+0

감사합니다. environ은 내가 필요한 것입니다! 다시 한 번 감사 드리며, 또한 린에게 환상적입니다. –

5

변수 환경을 추적하기 위해 환경 변수를 사용하는 것이 좋습니다. ;-)

다른 사람들은 그들이 -Ddb=foo 옵션을 사용하여 그것을 할 (System/getProperty "db")

1

가 Confijulate에서 살펴 보자 : 장점은 여기 설정이 중첩지도 등 이에 대한 가장 좋은 것은 리카입니다으로 임의 Clojure의 값이 될 수있다

암호 또는 키를 외부 파일에 저장하고 시스템 속성을 통해로드 할 수 있습니다. S3 또는 dB에 연결하는 함수에서 동일한 메커니즘을 통해로드 된 a 키를 사용하여 암호를 해독 할 수 있습니다. 읽는 파일이 웹 사용자 (tomcat 또는 jboss 또는 beanstalk에서 사용중인 컨테이너) 만 읽을 수 있는지 확인하십시오.