erlang 如何在独立的模块/处理程序(.erl文件)中添加.app.src文件

6tr1vspr  于 2022-12-08  发布在  Erlang
关注(0)|答案(2)|浏览(202)

我正在使用一个Erlang应用程序。我想编译并运行一个来自src/文件夹的.erl文件,该文件使用来自.app.src文件的环境变量。
所以我的要求是在一个处理程序中添加.app.src文件,并独立编译/运行.erl文件。如何实现同样的功能。

p1iqtdky

p1iqtdky1#

您可以使用application:load/1来载入.app档案,而不启动它。

sirbozc5

sirbozc52#

我的答案是对前面的答案(Jose M)的补充。假设处理程序模块(handler.erl)看起来像这样:

-module(handler).
-export([start/0]).
start() ->
  R1 = application:load(dynconf),
  io:format(user, "After app load.   R2=~p~n", [R1]),
  Test = application:get_env(dynconf, test),
  io:format(user, "After config changed. Test=~p~n~n", [Test]).

以及文件dynconf.app(其定义了仅用于env元组定义的空闲应用):

{application,dynconf,
             [{description,"dynamically (on fly) change configuration"},
              {vsn,"0.0.1"},
              {registered,[]},
              {applications,[]},
              {modules,[]},
              {mod,{dynconf,[]}},
              {env,[{test,7}]}]}.

然后在包含上述两个文件的文件夹中运行Erlang shell:

1> c("handler.erl").
{ok,handler}
2> handler:start().
After app load.   R2=ok
After config changed. Test={ok,7}

您已经从www.example.com文件中获得了一个环境变量test = 7dynconf.app。rebar使用dynconf.app.src来生成dynconf.app并将其复制到ebin文件夹。但是对于单独的 *.erl文件(没有rebar项目),您可以手动创建 *.app文件。

相关问题