在我的 clojure Luminus/Compojure 应用程序中,我有这个routes.clj
:
(def page-size 12)
(def images-path "/public/images/.....")
我需要将它们移动到某种配置中。最好的地方在哪里?我想要一些简单的东西,而不是在我已经使用的 Luminus 附带的库之上使用任何额外的库。
Luminus 使用它的config
库进行配置。您可以将配置变量放入适当的config.edn
文件(每个环境)。配置值可作为存储在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))))
问自己这个问题:
我是否希望在此设置不同的情况下多次部署我的应用程序?
如果该问题的答案是“是”,那么配置应该由运行您的应用程序的环境通过edn
文件、Environ或其他方式来决定。
如果不是……那么您说的是我将其归类为应用程序常量的东西,这有助于避免幻数。在某些情况下,它可以通过将它们放置在特定的命名空间中来提高可读性。
常量命名空间:
(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))