0

我正在开发一个 erlang 应用程序。我想从 src/ 文件夹中编译并运行一个 .erl 文件,该文件使用 .app.src 文件中的环境变量。

所以我的要求是在处理程序中添加 .app.src 文件并独立编译/运行 .erl 文件。如何达到同样的效果。

4

2 回答 2

0

我的答案是对先前答案(何塞 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}

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

于 2020-08-24T16:21:46.023 回答
0

您可以使用application:load/1加载 .app 文件而不启动它。

于 2020-08-23T14:17:51.763 回答