Я пытаюсь следовать руководству по ковбою здесь , и я не могу понять, как запустить http-сервер. Программа компилируется и запускается, но нет http-сервера, который прослушивает порт 8080.
Запуск make run
do, кажется, компилируется нормально, и при выполнении команды i()
я вижу hello_erlang_sup
процесс, как сказано на странице руководства.
Но после применения изменений к hello_world_app:start/2
и запуска make run
или make
прослушиватель http недоступен.
Я также добавил erlang:display(inside_start),
внутри функции и надеялся, что она может печатать на терминал, нет, может, эта функция не вызывается? Но как я могу выяснить, что, как новичок в языке и ковбой, уже есть 100 файлов для мира приветствия;).
Вот функция для справки:
start(_Type, _Args) ->
erlang:display(inside_start),
Dispatch = cowboy_router:compile([
{'_', [
{"/", hello_handler, []}
]}
]),
{ok, _} = cowboy:start_clear(my_http_listener, [{port, 8080}], #{
env => #{dispatch => Dispatch}
}),
hello_world_sup:start_link().
В случае, если это поможет / окажет влияние:
$ erl --version
Erlang/OTP 21 [erts-10.1.1] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [hipe]
$ uname -a
Linux 4.18.16-arch1-1-ARCH x86_64 GNU/Linux
Некоторые наивные вопросы, на которые я не могу найти ответы, atm:
1) Нужно ли что-то делать, чтобы что-то «запустить», или достаточно make run
? я пытался запустить двоичный файл, который находится в _rel/hello_erlang/bin/hello_erlang_release
с запуском | остановить | консоль.
2) Может быть, ковбой - это не правильный вариант для меня, чтобы начать. В настоящее время мне интересно узнать, подходит ли мне Эрланг. Возможно, мне не следует начинать с Интернета или не следует использовать какую-либо библиотеку, чтобы устранить путаницу и сосредоточиться только на Эрланге. Есть предложения?
Я наверняка упускаю что-то очень очевидное, но не могу найти это.
Ценю любую помощь,
Спасибо