<div dir="ltr"><div><div><div><div><div><div>In the config(5) man page we have a sys.config section:<br><br><a href="http://www.erlang.org/doc/man/config.html">http://www.erlang.org/doc/man/config.html</a><br><br></div>Which allows us to merge a file into the existing sys.config:<br><br>[{myapp,[{par1,val1},{par2,val2}]},<br> "/home/user/myconfig"].<br><br></div>This is a very neat trick, but if we read the code in `application_controller` there is a reference to OTP-4867 and this is only enabled for files named `sys.config`. This has bitten me several times, when people end up naming<br></div>their configuration file differently. What is the reasoning behind limiting this to sys.config? And would it be possible to relax the naming constraint such that there is a set of files which gets file expansion?<br><br></div>The reason I'm asking is because the whole game of configuring an application is a complex afair. Some environments are able to write files, whereas others are relying on the OS environment variables for certain settings. And yet others would like to be able to point to a file-chain which gets progressively merged into the configuration, like in sys.config.<br><br></div><div>In some environments, sys.config is run through a preprocessor and its contents are replaced by writing a temporary file next to sys.config. But once loaded, this newly temp file is not amenable to OTP-4867 substitution :/ And writing in the other direction, from a stanza file into sys.config also seems somewhat futile.</div><br></div>Clearly there were a lot of thought put into this configuration inside Ericsson, so in particular, how is a large Erlang system configured in a painless way? Specifically, how does one go about procuring a release of the software which doesn't change its checksum but can run in several environments: staging, user-acceptance-testing, production and contains *no* secret keys as part of its build but reads these from outside (e.g., the environmental "context" in which it has been deployed?)<br><br><div><div><div><div><div><div><div><div>-- <br><div class="gmail_signature">J.</div>
</div></div></div></div></div></div></div></div></div>