我应该在哪里保存简单的配置设置?

时间:2016-06-07 04:09:00

标签: clojure config compojure luminus

在我的clojure Luminus / Compojure应用程序中,我在routes.clj中有这个:

   (def page-size 12)
   (def images-path "/public/images/.....")

我需要将它们移动到某种配置。最好的地方在哪里?我想要一些简单的东西,不要在我已经使用的Luminus附带的库上使用任何额外的库。

2 个答案:

答案 0 :(得分:4)

Luminus使用它的config库进行配置。 You can put your configuration variables into appropriate config.edn files (per environment).配置值以config.core/env中存储的地图的形式提供。您可以在<app>.core命名空间中看到一个示例:

(defn http-port [port]
  ;;default production port is set in
  ;;env/prod/resources/config.edn
  (parse-port (or port (env :port))))

答案 1 :(得分:1)

问自己这个问题:

  

我是否希望在此设置不同的情况下多次部署我的应用程序?

如果该问题的答案是&#34;是&#34;那么配置应该由运行应用程序的环境决定,可以是edn文件,Environ或其他方式。

如果不是......那么你正在谈论我将其归类为应用程序常量的东西,这有助于避免magic numbers。在某些情况下,它可以通过将它们放在特定的命名空间中来提高可读性。

常量命名空间:

(ns my.app.constants)

(def page-size 12)
(def images-path "/public/images/.....")

应用:

(ns my.app.core
  (:require [my.app.constants :as const)

;; now access the application constant like this
;; const/page-size

(defn image-url [image-name]
  (str const/images-path "/" image-name))