2017-04-04 108 views
0

在部署的Clojure Luminus應用程序中存儲和檢索配置設置的習慣用法是什麼?已部署的Clojure應用程序中的本地配置

在我以我的應用程序爲基礎的Luminus模板中,profiles.clj文件用於存儲數據庫連接字符串。但是,當我使用lein uberjar編譯應用程序時,profiles.clj設置似乎未包含在已編譯的文件中。而且我不希望數據庫連接存儲在編譯文件中,而是駐留在生產服務器上的配置文件中。

無論應用程序是以開發模式還是生產模式運行,本地配置都應以相同的方式進行存儲和檢索。但我無法弄清楚如何去做。

回答

1

您可能會試圖使用the environ library。從他們的自述文件:


假設您有一個需要數據庫連接的應用程序。通常你需要三個不同的數據庫,一個用於開發,一個用於測試,另一個用於生產。

讓我們從environ.core/env映射中的關鍵字:database-url中獲取數據庫連接詳細信息。

(require '[environ.core :refer [env]]) 

(def database-url 
    (env :database-url)) 

此鍵的值可以通過幾種不同的方式設置。開發過程中最常用的方法是在項目目錄中使用本地profiles.clj文件。該文件包含一個與標準project.clj文件合併的映射,但可以保留在版本控制之外並保留用於本地開發選項。

{:dev {:env {:database-url "jdbc:postgresql://localhost/dev"}} 
:test {:env {:database-url "jdbc:postgresql://localhost/test"}}} 
+1

這是個好建議,因爲Luminus模板使用了Environ。 http://www.luminusweb.net/docs/environment.md – Scott

+0

謝謝!但我不太關注如何使用environ庫實現本地配置文件。我希望包含這樣一個文件,例如SMTP設置,數據庫連接變量以及其他特定於當前環境的misc變量。 –

相關問題