2016-06-20 6 views
2

Я создаю проект 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 и извлечь ключ там, и интерполировать его в карте проекта в соответствующем месте. Это лучший вариант? Есть ли более простой способ повторно использовать такое значение?

ответ

0

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

+0

Композитные профили не помогают. Это объединит два разных профиля. Я хочу, чтобы мой URL-адрес базы данных отображался в двух разных путях в моем профиле; Я не вижу способа сделать это без дублирования URL-адреса в конфигурации или использования какой-либо компиляции времени с макросом read-eval. – adambaker