Как добавить файл .app.src в независимый модуль / обработчик (файл .erl)

Я работаю над приложением Erlang. Я хочу скомпилировать и запустить один файл.erl из папки src/, в которой используются переменные среды из файла.app.src.

Поэтому мое требование - добавить файл.app.src в обработчик и независимо скомпилировать / запустить файл.erl. Как добиться того же.

2 ответа

Вы можете использовать application:load/1 для загрузки файла.app без его запуска.

Мой ответ является дополнением к предыдущему ответу (Хосе М.). Представьте, что модуль обработчика (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 в папке с двумя указанными выше файлами:

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

У вас есть окружение var test= 7 из файла dynconf.app. dynconf.app.src используется rebar для создания dynconf.app и копирования его в папку ebin. Но для одного файла *.erl (без проекта арматуры) вы можете создать файл *.app вручную.

Другие вопросы по тегам