Как получить имя среды при использовании среды в Clojure? Я имею в виду :dev, :test и т. д. Это нужно для того, чтобы передать его Yeller, чтобы при отображении ошибок он может сказать мне, в какой среде они оказались. Ошибки в подготовке обрабатываются иначе, чем ошибки в производстве.
Как получить имя среды при использовании среды в Clojure?
comment
Какой вариант использования здесь? Если нужно выполнять разные действия в зависимости от среды, возможно, добавление определенных элементов в среду (например, :database-url, :nrepl-port и т. д.) может решить проблему лучше. Вы также можете добавить ключ с именем среды в саму среду.
- person ez121sl   schedule 22.10.2015
Ответы (2)
Environ предоставляет доступ только к переменным среды, вам нужно установить их самостоятельно. Вы можете использовать lein-environ
для установки переменных среды в project.clj
в разных профилях. Эти профили будут выбраны leiningen и объединены вместе, к которым вы затем сможете получить доступ из своего кода. Например, у нас есть:
:profiles {:dev {:resource-paths ["test-resources"]
:env {:environment "development"
:db-host "localhost"
:port 5000}}}
Вместо этого в производстве мы предоставляем фактические переменные среды.
person
Daniel Compton
schedule
22.10.2015
Я закончил тем, что сделал что-то вроде этого.
- person pupeno; 23.10.2015
Точно так же, как вы хотите «Говорить, а не спрашивать» в своем коде, вам нужно просто использовать параметры конфигурации и позволить среде выяснить, какой из них правильный, основанный на среде. В том редком случае, когда вам действительно нужно само имя среды, просто поместите его в карту :env для каждой среды.
person
orend
schedule
23.10.2015