forked from ChicagoBoss/ChicagoBoss
-
Notifications
You must be signed in to change notification settings - Fork 0
Overwrite configuration with development configuration
schut edited this page Jan 11, 2013
·
2 revisions
I want to overwrite some settings in boss.config with development settings. I'm used to at least environments a development and a production. But in addition an system integration and an acceptance environment are common in my environments as well.
First look for 'boss_env' in the operating system environment, if not found fallback to the boss_env environment. Use the result read 'boss_{environment}.config' and overwrite boss.config settings with the settings found in this file.
Warning: I'm not sure which boss configuration environment parameters can be overwritten. I use it to overwrite my application specific environment parameters.
-module(app_00_config).
-export([init/0]).
-define(CONFIG_BASENAME, "boss").
init() ->
ConfigFile = ?CONFIG_BASENAME ++ "_" ++ env() ++ ".config",
case file:consult(ConfigFile) of
{ok, [Config]} -> config(Config);
{error, enoent} -> ok % no configuration overrides present
end.
env() ->
case os:getenv("boss_env") of
false -> atom_to_list(boss_env:boss_env());
Env -> Env
end.
config(Config) ->
true = lists:all(fun app_config/1, Config),
ok.
app_config({App, Config}) ->
lists:all(fun({Par, Val}) -> app_config_set_env(App, Par, Val) end, Config).
app_config_set_env(App, Par, Val) ->
application:set_env(App, Par, Val),
true.