Из-за того, как создано приложение для азота, вам не следует создавать приложение, тесно связанное с ним. Скорее, вы создаете свое приложение, предоставляете API для Nitrogen (API, которые вы будете вызывать из событий Nitrogen e.t.c).
Затем вы должны упаковать свое приложение как файловую систему OTP, поместив его в папку приложений азота. Когда азот создается или запускается, он добавляет ebin
пути ваших приложений, если они находятся в его каталоге приложений.
Например: модель и контроллер будут реализованы в вашем приложении. Затем в вашем приложении вы выставляете вызовы функций в вашем модуле (которые могут вести себя как gen_server), которые вы вызываете прямо со своей страницы азота. Прелесть в том, что все они будут в одном и том же пути кода.
Что делать: вы смотрите на скрипт Nitrogen quickstart.sh
, там, где он запускает erlang VM.
echo "Starting Nitrogen on Inets (http://localhost:8000)..."
erl \
-name YOUR_NODE_NAME_HERE \
-pa ./ebin ../apps/*/ebin ../apps/*/include \
-env ERL_FULLSWEEP_AFTER 10 \
-eval "application:start(nprocreg)" \
-eval "application:start(quickstart)" \
-eval "application:start(YOUR_APPLICATION)"
если ваше приложение не похоже на OTP, то создайте папку с именем «ebin», в которую вы поместите имеющиеся у вас файлы лучей. Создайте папку с именем «my_app-1.0» и вставьте эту папку ebin в эту папку
Nitrogen--|--/apps --|--/my_app-1.0 --|--/ebin
|--/doc
|--/rel
|--/support
|--/Quickstart
Полный путь к вашим файлам луча должен быть
"$NITROGEN/apps/my_app-1.0/ebin"
.
Всякий раз, когда Nitrogen запускается, он добавляет к пути кода все ваши файлы лучей. Затем, если в вашем коде есть функция, которая запускает ваши вещи, скажите:
main_server:start()
.
Вы измените
quickstart.sh
, найденный в
$NITROGEN/Quickstart/quickstart.sh
, таким образом.
echo "Starting Nitrogen on Inets (http://localhost:8000)..."
erl \
-name YOUR_NODE_NAME_HERE \
-pa ./ebin ../apps/*/ebin ../apps/*/include \
-setcookie YOUR_FUNNY_COOKIE_HERE \
-mnesia dir '"PATH/TO/MNESIA/DIRECTORY"' \
-env ERL_FULLSWEEP_AFTER 10 \
-eval "application:start(nprocreg)" \
-eval "application:start(quickstart)" \
<b>-eval "main_server:start()"</b>
Преимущество этого заключается в том, что если вам случится изменить свое мнение на erlyweb , erlang web , вы не будете необходимо внести изменения в вашу модель или контроллер, а вы, скорее всего, выставили API, которые можно вызывать из любой библиотеки типов представлений.