Запуск приложения с Erlang - PullRequest
       7

Запуск приложения с Erlang

3 голосов
/ 09 января 2012

Я хотел бы написать отдельное приложение Erlang, которое можно запускать так же, как любую другую программу (нажав на исполняемый файл .exe). Что-то вроде Wings3D делает.

Как я могу это сделать? Каков наилучший подход, чтобы сделать это возможным? Я на платформе Windows, если это важно.

2-е ОБНОВЛЕНИЕ:

Ну, я не экспортировал функцию promodb:start/0, и это было причиной, по которой Эрланг не смог запуститься (и, как говорит Музаая Джошуа, werl -s не работает). Но теперь у меня есть еще одна странная проблема. В моем rebar.config у меня есть 2 зависимости:

{deps, [
            {cowboy, ".*", {git, "https://github.com/extend/cowboy.git"}},
            {erlydtl, ".*", {git, "https://github.com/evanmiller/erlydtl.git"}}
        ]
}.

и после запуска Erlang с помощью

erl -pa ebin deps/cowboy/ebin deps/erlydtl/ebin deps/proper/ebin -s promodb

По приложению: which_application () я обнаружил, что запускается только Cowboy:

[{cowboy,"Small, fast, modular HTTP server.","0.4.0"},
 {stdlib,"ERTS  CXC 138 10","1.18"},
 {kernel,"ERTS  CXC 138 10","2.15"}]

Насколько я знаю, Erlang должен запустить все необходимые приложения, которые я поместил в мой файл promodb.app, как:

{application, promodb,
 [
    {description, ""},
    {vsn, "0.1"},
    {registered, [promodb_sup]},
    {applications, [
                  kernel,
                  stdlib,
                  cowboy,
                  erlydtl
                 ]},
    {mod, { promodb, []}},
    {env, []}
 ]}.

Что я сделал не так?

Ответы [ 4 ]

3 голосов
/ 10 января 2012

Я использую rebar escriptize, чтобы упаковать отдельный пакет, например, арматуру.Тогда вы можете использовать ./PackageName в Linux или escript.exe PackageName в Windows.

2 голосов
/ 09 января 2012

Я думаю, вам нужно создать пакет выпуска и загрузочный скрипт, как описано в документации .

1 голос
/ 10 января 2013

Erlydtl не имеет поведения приложения, он работает как библиотека. Как видно из примеров erlydtl, запускать приложение не требуется.

https://github.com/evanmiller/erlydtl#template-compilation

Проверьте это:

erl -pa ebin deps / * / ebin

1> erlydtl: compile (<< "{{foo}}" >>, my_module_name).

Это работает?

Мне нравится опция escriptize rebar для создания исполняемых файлов.

1 голос
/ 10 января 2012

На самом деле опция -s работает везде.Просто используйте erl НЕ werl.Команда werl пытается загрузить графический интерфейс в Windows.

BitRock Install Builder - отличный инструмент, который вам нужно проверить. Веб-сервер Yaws , написанный на Erlang, использует его и многие другие приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...