Skip to content

Commit

Permalink
Merge pull request flashingpumpkin#5 from bluegraybox/master
Browse files Browse the repository at this point in the history
Double-init issue
  • Loading branch information
flashingpumpkin committed Oct 7, 2011
2 parents a34ae51 + 0af73f4 commit 4dd02fc
Showing 1 changed file with 15 additions and 10 deletions.
25 changes: 15 additions & 10 deletions src/spooky.erl
Expand Up @@ -39,19 +39,14 @@ start(Modules) when is_list(Modules)->
start([Module|T], Handlers, Middlewares)->
?LOG_INFO("Starting spooky with ~p", [Module]),
% The first module's options are the ones for misultin
Opts = apply(Module, init, [[]]),

Opts0 = proplists:delete(handlers, Opts),
?LOG_INFO("Options ~p", [Opts]),
start([Module|T], Handlers, Middlewares, Opts0).
{ModuleOpts, ModuleHandlers, ModuleMiddlewares} = init_module(Module),
Opts = proplists:delete(handlers, ModuleOpts),
?LOG_INFO("Options ~p", [ModuleOpts]),
start(T, Handlers ++ ModuleHandlers, Middlewares ++ ModuleMiddlewares, Opts).

start([Module|T], Handlers, Middlewares, Opts)->
% Accumulate all the handlers and middlewares
ModuleOpts = apply(Module, init, [[]]),

ModuleHandlers = lookup(handlers, ModuleOpts, [Module]),
ModuleMiddlewares = lookup(middlewares, ModuleOpts, []),

{_, ModuleHandlers, ModuleMiddlewares} = init_module(Module),
start(T, Handlers ++ ModuleHandlers, Middlewares ++ ModuleMiddlewares, Opts);

start([], Handlers, Middlewares, Opts)->
Expand Down Expand Up @@ -90,6 +85,16 @@ behaviour_info(callbacks)->
behaviour_info(_Other)->
undefined.


%%
%% Utility methods
%%
init_module(Module) ->
Opts = apply(Module, init, [[]]),
Handlers = lookup(handlers, Opts, [Module]),
Middlewares = lookup(middlewares, Opts, []),
{Opts, Handlers, Middlewares}.

lookup(Key, Opts, Default)->
case proplists:lookup(Key, Opts) of
none ->
Expand Down

0 comments on commit 4dd02fc

Please sign in to comment.