【发布时间】:2014-02-26 08:41:21
【问题描述】:
我正在尝试使用 environ 访问在我的 project.clj :dev 配置文件中指定的环境变量。这看起来是设置不同配置选项的好方法,但我似乎无法让它工作。我的 project.clj 条目如下所示:
:profiles
{:dev {:dependencies [[javax.servlet/servlet-api "2.5"]
[ring-mock "0.1.5"]]
:env {:foo "FOO" :bar "BAR"}}}
如果我运行 lein repl 并 require 然后从我的项目中输入(使用 in-ns)一个命名空间,environ.core/env 只会返回 nil:
(environ.core/env :foo)
nil
将 :env 条目添加到 .lein/profiles.clj 中的 :user 配置文件也不起作用。我做错了什么?
【问题讨论】:
-
如果您运行
(System/getenv),您是否看到“FOO”或“foo”或“:foo”作为任何键?例如,我注意到 (env.core/env :pwd) 返回由我的环境中的“PWD”键引用的值。 -
@noisesmith 好吧,我可以使用 environ 获取诸如 PATH 之类的环境变量,它只是在我的 defproject :profiles 下定义的那些似乎看不到的变量。不,我没有看到 foo 的任何变化。
-
如果 environ 可以获取其他 env var,这不是 environ 问题,而是 leiningen 问题。很可能您没有正确添加环境变量。
-
@noisesmith 这正是我的想法,但我很确定我是。比较接受的答案here。
标签: clojure environment-variables leiningen