2

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

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

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

4

2 回答 2

4

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))))
于 2016-06-07T05:35:08.770 回答
2

问自己这个问题:

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

如果该问题的答案是“是”,那么配置应该由运行您的应用程序的环境通过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))
于 2016-06-08T13:58:50.517 回答