Как я могу использовать значение из моего profiles.clj в другом разделе конфигурации моего профиля/проекта?

Я создаю проект clojure, используя Leiningen с environ, чтобы сохранить uri для управления подключением к базе данных либо в проекты profiles.clj или переменная среды, и я хочу попробовать использовать lein-flyway для управления миграцией БД.

У Lein-flyway есть собственная конфигурация, указывающая uri базы данных, и я бы не стал заставлять своих коллег размещать uri соединения в двух местах в своей конфигурации.

В настоящее время profiles.clj не зарегистрирован и выглядит примерно так:

{:profiles/dev 
 {:env {:database-url
        "jdbc:postgresql://localhost/project?user=$USER&password=$PASS"}}
 :profiles/test
  {:env {:database-url
         "jdbc:postgresql://localhost/project_test?user=$USER&password=$PASS"}}}

И я хотел бы добавить запись, подобную следующей, либо на мою карту :profiles/dev в моей profiles.clj, либо на мою карту :project/dev в моей project.clj.

:flyway {:url ~(get-in profile-map [:profiles/dev :env :database-url])}

Кажется, я мог бы взять profiles.clj в свой проект.clj, извлечь там ключ и интерполировать его в карту проекта в соответствующем месте. Это лучший вариант? Есть ли более простой способ повторного использования такого значения?


person adambaker    schedule 20.06.2016    source источник


Ответы (1)


Я не знаю, правильно ли я понимаю, но, возможно, это помочь вам.

person Édipo Féderle    schedule 22.06.2016
comment
Композитные профили не помогают. Это объединит два разных профиля. Я хочу, чтобы URL-адрес моей базы данных отображался в двух разных ключевых путях внутри моего профиля; Я не вижу способа сделать это без дублирования URL-адреса в конфигурации или использования некоторого трюка во время компиляции с макросом read-eval. - person adambaker; 16.07.2016