Loading application variables

Ulf Wiger ulf@REDACTED
Sun Jun 11 16:25:03 CEST 2006

Den 2006-06-11 14:42:43 skrev Pupeno <pupeno@REDACTED>:

> I understand it can be written, but since nobody has written it yet I
> suppose people work in other ways, if so, I want to learn that instead
> of writing a function (that doesn't belong to my project anyway, but to
> Erlang itself).

What I normally do is (possibly) use environment variables to store
defaults, and then providing an API for setting the desired values
at runtime.

Mnesia, for example, relies on environment variables for various settings,  
but you can also call mnesia:start(Options), and set the same values that  
way. What mnesia does at startup is to read the options - either passed as  
arguments to the start function, or given as environment variables - and  
then storing them as temporary objects in the schema.

The module proplists is a convenient way to handle {Key, Value} options.  
You can, for example, do:

start(StartOpts) ->
   Options = StartOpts ++ application:get_all_env(?APP_NAME),
   Port = proplists:get_value(port, Options),

The proplists module will fetch the first instance of a given key, so all  
you need to do to override the defaults is to prepend the new values to  
the list.

Ulf W
Ulf Wiger

More information about the erlang-questions mailing list