Loading application variables

Serge serge@REDACTED
Wed Jun 21 14:09:35 CEST 2006


Actually, there is a way to reload the application configuration from 
sys.config without restarting a node using a non-documented 
application_controller's call (in a similar way how it's done by the 
release handler):

reload_config(AppNames, ConfigFile) ->
     {ok, [Config]} = file:consult(ConfigFile),
     Apps = [{application, A, element(2,application:get_all_key(A))}
             || {A,_,_} <- application:while_applications()],
     application_controller:change_application_data(Apps,Config).

It would be nice if the following function was exported from the 
application_controller:

check_conf/0

then, you wouldn't need to pass the ConfigFile name to the 
reload_config/2 written above, but do:

Config = application_controller:check_conf().

Regards,

Serge


Pupeno wrote:
> On Sun, 2006-06-11 at 13:39 +0100, Sean Hinde wrote:
> 
>>On 11 Jun 2006, at 13:06, Pupeno wrote:
>>
>>
>>>On Sun, 2006-06-11 at 14:02 +0200, Ulf Wiger wrote:
>>>
>>>>I don't know if there's a standard function for loading  
>>>>the .config file,
>>>>but you can read and parse a .config file with
>>>>file:consult("miselfu.config"), and you can set environment  
>>>>variables with
>>>>application:set_env(AppName, Key, Value).
>>>
>>>So, you don't normally work that way ? Opening up a shell on Emacs,
>>>running the application and re-loading code as it is modified ?
>>
>>I would think that most more serious erlang applications use the  
>>sys.config file for a few parameters that are only required at  
>>startup and not subject to change. Parameters that should change at  
>>runtime would typically be stored in a database or opened up as APIs  
>>so they can be changed without restarting the application.
>>
>>Of course your application might be such that it can be restarted  
>>after every config change, in which case sys.config might be sufficient.
> 
> 
> So far, these configurations, are port numbers. You have to interrupt
> the service anyway to change the port you offer the service on. Although
> I may store them on a DB latter, right now I only want to be able to run
> the app from erl.




More information about the erlang-questions mailing list