For what it’s worth adding this line to your project.clj
has usually fixed these sort of issues for me:
https://github.com/technomancy/leiningen/blob/stable/sample.project.clj#L308
cc @weavejester
I’ve never understood why leiningen doesn’t do this by default.
Just to mention that duct has a thin layer ontop of integrant that supports this sort of thing through :duct/include
Basically you have multiple integrant maps in separate edn files that get meta-merged together in order. e.g. you can do something like:
;; dev.edn
{:duct/include ["main.edn"]
:service.dev/monitoring {:dev :version}
}
;; main.edn
{
:service.prod/monitoring {:prod :version}
:the/service {:monitoring #ig/ref :service/monitoring}
}
(assuming both dev/prod versions derive from the :service/monitoring)
Or you can easily wire something like this up yourself.The reason Duct doesn’t do that by default is because that doesn’t play well with in-process compilers.