Я создаю проект clojure, используя Leiningen с environ, чтобы сохранить uri для управления соединением базы данных в проектах profiles.clj
или переменной среды, и я хочу попробовать использовать lein-flyway для управления миграциями db.Как использовать значение в моих профилях.clj в другом разделе моей конфигурации профиля/проекта?
У 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 в моем project.clj и извлечь ключ там, и интерполировать его в карте проекта в соответствующем месте. Это лучший вариант? Есть ли более простой способ повторно использовать такое значение?
Композитные профили не помогают. Это объединит два разных профиля. Я хочу, чтобы мой URL-адрес базы данных отображался в двух разных путях в моем профиле; Я не вижу способа сделать это без дублирования URL-адреса в конфигурации или использования какой-либо компиляции времени с макросом read-eval. – adambaker