基于erlang中的配置参数启动依赖项
我的一些应用程序依赖项仅在设置了给定参数时使用。我需要知道启动这些依赖关系的最佳方法是什么。我使用的是Erlang R14B04,不能使用其他版本 我有两个选择。第一个:基于erlang中的配置参数启动依赖项,erlang,otp,Erlang,Otp,我的一些应用程序依赖项仅在设置了给定参数时使用。我需要知道启动这些依赖关系的最佳方法是什么。我使用的是Erlang R14B04,不能使用其他版本 我有两个选择。第一个: %% file myapp.erl start() -> dep1:start(), dep2:start(), application:start(myapp), case application:get_env(myapp, use_app3) -> true -
%% file myapp.erl
start() ->
dep1:start(),
dep2:start(),
application:start(myapp),
case application:get_env(myapp, use_app3) ->
true ->
dep3:start()
_ ->
ok
end.
start(Type, StartArgs) ->
supervisor:start_link({local, ?MODULE}, ?MODULE, []).
第二个例子:
%% file myapp.erl
start() ->
dep1:start(),
dep2:start(),
application:start(myapp).
start(Type, StartArgs) ->
case application:get_env(myapp, use_app3) ->
true ->
dep3:start()
_ ->
ok
end.
supervisor:start_link({local, ?MODULE}, ?MODULE, []).
哪种方法是解决问题的最佳方法?我认为第一种方法是更好的选择。start/0似乎关心启动相关应用程序,而start/2则启动当前应用程序的监控树 这是两个独立的关注点,因此将条件逻辑放在start/2中似乎会稍微弄脏您的代码
我注意到在第一个示例中,您正在启动自己的应用程序之后的第三个应用程序。在第二个示例中,您在启动自己的应用程序之前启动第三个应用程序。您的应用程序需要先执行哪些操作?某些模块?还是一些应用程序?因为模块在任何时候都可用,无需任何启动。模块不是进程。应用程序。我编辑了这篇文章。