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.
