/priv/skel/src/skel_sup.erl
Erlang | 62 lines | 34 code | 14 blank | 14 comment | 3 complexity | 25caa315c3635cdc015cb0dbe3be986a MD5 | raw file
Possible License(s): MIT
- %% @author author <author@example.com>
- %% @copyright YYYY author.
- %% @doc Supervisor for the skel application.
- -module(skel_sup).
- -author('author <author@example.com>').
- -behaviour(supervisor).
- %% External exports
- -export([start_link/0, upgrade/0]).
- %% supervisor callbacks
- -export([init/1]).
- %% @spec start_link() -> ServerRet
- %% @doc API for starting the supervisor.
- start_link() ->
- supervisor:start_link({local, ?MODULE}, ?MODULE, []).
- %% @spec upgrade() -> ok
- %% @doc Add processes if necessary.
- upgrade() ->
- {ok, {_, Specs}} = init([]),
- Old = sets:from_list(
- [Name || {Name, _, _, _} <- supervisor:which_children(?MODULE)]),
- New = sets:from_list([Name || {Name, _, _, _, _, _} <- Specs]),
- Kill = sets:subtract(Old, New),
- sets:fold(fun (Id, ok) ->
- supervisor:terminate_child(?MODULE, Id),
- supervisor:delete_child(?MODULE, Id),
- ok
- end, ok, Kill),
- [supervisor:start_child(?MODULE, Spec) || Spec <- Specs],
- ok.
- %% @spec init([]) -> SupervisorTree
- %% @doc supervisor callback.
- init([]) ->
- Ip = case os:getenv("MOCHIWEB_IP") of false -> "0.0.0.0"; Any -> Any end,
- WebConfig = [
- {ip, Ip},
- {port, 8000},
- {docroot, skel_deps:local_path(["priv", "www"])}],
- Web = {skel_web,
- {skel_web, start, [WebConfig]},
- permanent, 5000, worker, dynamic},
- Processes = [Web],
- {ok, {{one_for_one, 10, 10}, Processes}}.
- %%
- %% Tests
- %%
- -include_lib("eunit/include/eunit.hrl").
- -ifdef(TEST).
- -endif.