[erlang-questions] How do I move this into a config file?
Sat Aug 27 18:31:36 CEST 2011
On Thu, Aug 25, 2011 at 10:02 PM, Matthew Hillsborough
> Hi everyone,
> I have some hard coded defines in one of my modules that looks like the
> -define(FOOBAR, "DEBUG_FOOBAR").
> -define(FOOBAR, "PROD_FOOBAR").
> I want to be able to deploy this to multiple servers with a config file
> using rebar. So I suppose this is a two part question:
> How does one move the above into an external configuration file and then
> read it back into the application?
There's a canonical way to do this in Erlang that you can (should) use.
It will help to do a little reading on "applications":
In particular, look at "Configuring an Application".
Also, check out the get_env and get_all_env functions in the application module:
- Define you release specific configuration in a *.config file
- When running erl, specify "-config FILE" as an option (note, do not
include the .config suffix, but path is okay)
- From your OTP application, use application:get_env/1 to read your config
The only catch here that can be confusing (IMO) is
application:get_env/1, which looks up values associated with the
application that the process is running under. If process wasn't
started by an application (application:start/1) you'll get undefined.
Just an FYI that can throw you.
More information about the erlang-questions