Веб-сервер Cowboy аварийно завершает работу при запуске после добавления зависимости ibrowse в Makefile

В настоящее время я разрабатываю сервер на Erlang, используя Cowboy в качестве основы веб-сервера. При запуске мне нужно иметь возможность выполнять HTTP-вызовы на стороне сервера для получения файлов с других веб-серверов, поэтому я включил зависимость Makefile в ibrowse

В документации ibrowse ничего конкретно не говорится о добавлении в качестве зависимости Cowboy, но в документации erlang.mk указано, что мне нужно добавить только одну строку

DEPS = ibrowse

Однако, как только я добавляю эту строку, Cowboy вылетает при запуске с

=INFO REPORT==== 15-Feb-2018::14:51:13 ===
    application: geo_server
    exited: {bad_return,
                {{geo_server_app,start,[normal,[]]},
                 {'EXIT',
                     {undef,
                         [{cowboy_router,compile,
                              [[{'_',
                                    [{"/",default_handler,[]},
                                     {"/client_info",client_info_handler,[]},
                                     {"/search",request_handler,[]}]}]],
                              []},
                          {geo_server_app,start,2,
                              [{file,"src/geo_server_app.erl"},{line,8}]},
                          {application_master,start_it_old,4,
                              [{file,"application_master.erl"},
                               {line,273}]}]}}}}
    type: permanent
{"Kernel pid terminated",application_controller,"{application_start_failure,geo_server,{bad_return,{{geo_server_app,start,[normal,[]]},{'EXIT',{undef,[{cowboy_router,compile,[[{'_',[{\"/\",default_handler,[]},{\"/client_info\",client_info_handler,[]},{\"/search\",request_handler,[]}]}]],[]},{geo_server_app,start,2,[{file,\"src/geo_server_app.erl\"},{line,8}]},{application_master,start_it_old,4,[{file,\"application_master.erl\"},{line,273}]}]}}}}}"}
Kernel pid terminated (application_controller) ({application_start_failure,geo_server,{bad_return,{{geo_server_app,start,[normal,[]]},{'EXIT',{undef,[{cowboy_router,compile,[[{'_',[{"/",default_handle
heart: Thu Feb 15 14:51:14 2018: Erlang is crashing .. (waiting for crash dump file)
heart: Thu Feb 15 14:51:14 2018: Would reboot. Terminating.
gmake: *** [erlang.mk:6639: run] Error 1

Уберите эту зависимость, и Cowboy запустится нормально.

PROJECT = geo_server
PROJECT_DESCRIPTION = Geographic information server
PROJECT_VERSION = 0.1.0

DEPS = cowboy
dep_cowboy_commit = 2.2.2
DEP_PLUGINS = cowboy

include erlang.mk

DEPS = ibrowse

Также не имеет значения, ставлю ли я DEPS = ibrowse до или после строки include elrang.mk.


Еще немного поболтав, это похоже на проблему кэширования в том, как работает процесс Cowboy make run.

Добавление ibrowse требует двух вызовов make run. Если мой код затем выйдет из строя, мне придется добавить, а затем снова удалить ibrowse, прежде чем я смогу увидеть, как работает мой исправленный код.

Спасибо

Крис В.


person Chris W    schedule 15.02.2018    source источник
comment
Вы пытались ввести в одну строку, например DEPS = cowboy ibrowse ?   -  person Elvis Oric    schedule 15.02.2018
comment
@ElvisOric Ах, да, это работает. Спасибо   -  person Chris W    schedule 15.02.2018


Ответы (2)


Из документации на erlang.mk.

DEPS Список приложений, от которых зависит этот проект, должен быть загружен Erlang.mk.

Решение: DEPS = ковбойский ibrowse

person Elvis Oric    schedule 15.02.2018

DEPS требуется только один раз и содержит список зависимостей, разделенных пробелами.

person Chris W    schedule 15.02.2018