I have spend a whole night trying to understand how the actual configuration management should work. Current situation seems to be
- for development and using Mix, just use
config/config.exs (and maybe some includes per environment).
- you should be using Distillery for production releases. But then it is harder to manage just in time configuration (e.g. via environment).
There are basically two approaches
- projects like conform, which makes configuration of the release quite managable
- putting own code int
init for Elixir and Ecto (some other apps don’t provide the same api)
What is really confusing is that both approaches sort of suggest two sets of configurations to be maintained:
if I use conform, then there is currently no support for using its configuration when Mix is available (https://github.com/bitwalker/conform/issues/138). I am not sure, if this is even a good idea or something what would be endorsed by community.
What I am trying to say is that it would be super helpful to go beyond
At the moment of writing, we believe the Elixir community relies too much on the application environment. Most configuration should happen at runtime, by passing options when invoking functions or when starting processes.
Maybe a bit of insight who you guyz are doing the actual deploys to production from the configuration standpoint.