Я могу запустить приложение вручную из оболочки rebar3, выполнив application:start(lager)
, а затем application:start(myapp)
. Я бы хотел, чтобы это произошло без необходимости вводить его, например, путем выполнения сценария оболочки, который сообщает rebar3 о необходимости выполнения этих команд. Это возможно?
Как запустить приложение Erlang при запуске rebar3
Ответы (2)
Предполагая, что вы хотите запустить приложение во время разработки, вы можете сделать это следующим образом:
либо вы указываете приложения в командной строке следующим образом:
rebar3 shell --apps lager myapp
или вы указываете в rebar.config
{shell, [{apps, [lager, myapp]}]}.
, а затем просто запускаете его сrebar3 shell
. Например, у меня есть приложение с именемtron
, и в моем rebar.config есть следующая строка:{shell, [{apps, [kernel,stdlib,cowboy,lager,tron]}]}
. Теперь, когда я запускаюrebar3 shell
, мое приложение erlang запускается вместе со всеми зависимостями.
Дополнительную информацию о оболочке rebar3 и о том, как ее использовать, см. В этом замечательном сообщении в блоге от создателя, или официальную документацию здесь.
Но, как вы, вероятно, знаете, правильный способ запустить приложение для развертывания - сначала создать выпуск, а затем просто запустить его как исполняемый файл (с тех пор, как я создал выпуск, прошло некоторое время, но тогда он К сожалению, было сложнее, чем кажется! Хотя похоже, что rebar3, возможно, упростил задачу: rebar3 выпускает.
Я хотел бы добавить, что вы также можете указать приложения, которые будут загружаться при запуске, внутри файла myapp.app.src.
...
{applications,
[kernel,
stdlib,
anotherapp
]},
...
$ rebar3 shell
не запускает приложения, перечисленные в кортеже applications
, когда я пробую его, даже если rebar3 docs похоже, говорят, что это способ запустить зависимые приложения. :(
- person 7stud; 26.01.2019