[erlang-questions] initializing library applications without processes
Ulf Wiger
ulf.wiger@REDACTED
Sat Apr 3 20:41:37 CEST 2010
I received exactly this question while at the SF Erlang Factory.
My suggestion is: start a supervisor with no children. A reasonable
"cheat" is to put all of this in the app file
-module(myapp).
-behaviour(application).
-export([start/2, stop/1]).
-behaviour(supervisor).
-export([init/1]).
start(_, _) ->
supervisor:start_link({local,?MODULE},?MODULE,[]).
stop(_) -> ok.
init([]) ->
%% create tables here...
{ok, {{one_for_one,3,10},[]}}.
Baking the supervisor into the application callback module is
in a sense against the OTP design rules, but the most notable
example of this is surely OTP's 'kernel' application, so you
won't be tarred and feathered for doing so. :)
BR,
Ulf W
karol skocik wrote:
> Hi,
> sometimes, I just need a library "application" without processes,
> which works with some state in ETS. To function properly,
> they have to make the ETS table and populate it with values
> from config files. When that step is done, there is nothing left to do
> for processes, they would just serve as a useless proxy for
> querying the ETS table, and that's not needed when you can (in some contexts)
> access the table directly.
>
> I like the mechanism of applications and their dependency solving,
> and I would ideally do application:start(my_app_with_ets_initialised)
> but that won't do, since {ok, SupPid} is expected as a result.
>
> But I don't want to start any processes, I just want to ensure that
> application_master:init/4 calls my "start" function,
> and declare application as "running" when 'ok' is returned
> or fail otherwise (unless it's {ok, SupPid} - as it is now).
>
> Currently, when we have library application, application:start(...)
> does not call anything since 'mod' is not specified in .app file.
> Could it be changed, and application behaviour would just call
> start/2 and stop/1 as usual, but start the SupPid optionally when it's supplied?
> Or - alternatively - is there any way how to ensure that some init
> function is done
> fitting nicely with application dependencies as declared in .rel file?
>
> Thanks,
> Karol
>
> ________________________________________________________________
> erlang-questions (at) erlang.org mailing list.
> See http://www.erlang.org/faq.html
> To unsubscribe; mailto:erlang-questions-unsubscribe@REDACTED
>
--
Ulf Wiger
CTO, Erlang Solutions Ltd, formerly Erlang Training & Consulting Ltd
http://www.erlang-solutions.com
---------------------------------------------------
---------------------------------------------------
WE'VE CHANGED NAMES!
Since January 1st 2010 Erlang Training and Consulting Ltd. has become ERLANG SOLUTIONS LTD.
www.erlang-solutions.com
More information about the erlang-questions
mailing list