I found some related writing about this issue in Elixir. This is from the 
docs of conform: 

https://hexdocs.pm/conform/getting-started.html#files-files-everywhere

In the beginning, there was sys.config, and it was good. You could easily 
> configure your application in one file, and tell the VM to use that file 
> when booting up. It lacked runtime dynamism though (i.e. environment 
> variables), for which you needed to use other VM flags to provide such 
> configuration values. Even then, one still couldn’t inject configuration 
> via the environment as any type other than a string. To this day, 
> sys.config is still the primary means of configuring the Erlang VM.
>
 

> Along came Elixir, a fresh take on the venerable Erlang. Along with it, 
> came config.exs, as the solution to all the ills of sys.config. Or so it 
> seemed. It solved runtime dynamism, and extracting typed configuration from 
> the environment, by allowing you to execute arbitrary Elixir code in the 
> config file when it was evaluated. A miracle! However it has one flaw, and 
> it unfortunately undermines a lot of the power that config.exs provides: 
> it is intrinsically tied to the Mix project structure, and thus cannot be 
> used with releases, which require sys.config. The solution is to evaluate 
> config.exs and convert the resulting configuration to sys.config - but 
> now you’ve removed the ability to do any runtime configuration by fetching 
> variables from the environment. Ultimately this leaves us where we started.
>
 

> It is at this point that various workarounds developed, for example, the 
> convention of configuring via {:system, "VAR"} tuples. Unfortunately, 
> this convention is neither universal, nor consistent - you are ultimately 
> at the mercy of your dependencies in this regard.

-- 
You received this message because you are subscribed to the Google Groups 
"elixir-lang-core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elixir-lang-core/be85edd6-88b6-420e-80a8-2ad5c03df24e%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to