2017-04-04 68 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变量。 –

相关问题