在我的clojure Luminus / Compojure应用程序中,我在routes.clj
中有这个:
(def page-size 12)
(def images-path "/public/images/.....")
我需要将它们移动到某种配置。最好的地方在哪里?我想要一些简单的东西,不要在我已经使用的Luminus附带的库上使用任何额外的库。
答案 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))