Как добавить файл .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 вручную.