[erlang-questions] separating application from gen server

Tom Whitcomb <>
Wed Nov 28 05:33:16 CET 2007


Hi,

I want to use application:get_env in my gen_server but it feels wrong to create a dependency between my gen_server and a specific application.

Is there a recommended way for a gen_server to receive and reference the application that contains it?

What if I do something like below which passes the application name from the .app to a start_link/1 to the init/1 in the gen_server?

Thanks for any recommendations.

Tom


% .app
% ----

  {application, my_app, 
  [{mod, {my_app,[my_app]}}]}. 


% my application
% --------------

  -module(my_app).
  -behavior(application).

  start(Type,Args) ->
    my_server:start_link(Args).
 
  stop(_State) ->
    ok.


% my gen server
% -------------

  -module(my_server).
  -behavior(gen_server).

  start_link(Args) -> 
    gen_server:start_link({local,?MODULE},?MODULE,Args,[]).

  stop() -> 
    gen_server:stop(?MODULE).

  init([App]) ->
    application:get_env(App).






More information about the erlang-questions mailing list