Как решить проблемы с зависимостью с Erlang Rebar? - PullRequest
1 голос
/ 11 ноября 2019

Я пытаюсь добавить сваггер к существующему демонстрационному проекту erlang_rest_api в качестве обучающего опыта, но я, кажется, не очень далеко ...

Я клонировалРЕПО:

git clone https://github.com/dronowar/erlang_rest_api

Затем я добавил cowboy_swagger к rebar.config:

{cowboy_swagger, ".*", {git, "git://github.com/inaka/cowboy_swagger.git"}}

И когда я строю, я получаю:

Dependency not available: jsx-2.9.0 (undefined)
Dependency not available: cowboy-2.5.0 (undefined)
Dependency not available: ranch-1.6.2 (undefined)
Dependency not available: trails-2.1.0 (undefined)

Поэтому я добавляю к rebar.config:

{jsx, ".*", {git, "git://github.com/talentdeficit/jsx.git", {tag, "2.9.0"}}},
{ranch, ".*", {git, "git://github.com/ninenines/ranch.git", {tag, "1.6.2"}}},
{trails, ".*", {git, "git://github.com/inaka/cowboy-trails.git", {tag, "2.1.0"}}},

А потом я удаляю каталог deps и строю заново:

...
==> poolboy (get-deps)
==> sync (get-deps)
==> katana_test (get-deps)
==> jsx (get-deps)
ERROR: Failed to load erlang_rest_api/deps/trails/rebar.config: {error,
                                                                                      {34,
                                                                                       file,
                                                                                       {error,
                                                                                        function_clause,
                                                                                        [{erl_eval,
                                                                                          '-inside-an-interpreted-fun-',
                                                                                          [katana_test],
                                                                                          []},
                                                                                         {erl_eval,
                                                                                          eval_fun,
                                                                                          6,
                                                                                          [{file,
                                                                                            "erl_eval.erl"},
                                                                                           {line,
                                                                                            829}]},
                                                                                         {erl_eval,
                                                                                          expr_list,
                                                                                          6,
                                                                                          [{file,
                                                                                            "erl_eval.erl"},
                                                                                           {line,
                                                                                            888}]},
                                                                                         {erl_eval,
                                                                                          expr,
                                                                                          5,
                                                                                          [{file,
                                                                                            "erl_eval.erl"},
                                                                                           {line,
                                                                                            240}]},
                                                                                         {erl_eval,
                                                                                          expr_list,
                                                                                          6,
                                                                                          [{file,
                                                                                            "erl_eval.erl"},
                                                                                           {line,
                                                                                            888}]},
                                                                                         {erl_eval,
                                                                                          expr,
                                                                                          5,
                                                                                          [{file,
                                                                                            "erl_eval.erl"},
                                                                                           {line,
                                                                                            240}]},
                                                                                         {erl_eval,
                                                                                          eval_lc1,
                                                                                          6,
                                                                                          [{file,
                                                                                            "erl_eval.erl"},
                                                                                           {line,
                                                                                            706}]},
                                                                                         {erl_eval,
                                                                                          eval_generate,
                                                                                          7,
                                                                                          [{file,
                                                                                            "erl_eval.erl"},
                                                                                           {line,
                                                                                            735}]}]}}}
make: *** [Makefile:7: deps] Error 1

katana_test, похоже, является своего рода тестированиеморудие труда. Я попытался добавить эти репозитории (inaka / katana-est) в rebar.config, но это тоже не работает.

Я также попытался пометить ковбоя версией "2.5.0", как указано в "undefined" ранее, ноэто не имело значения.

Действительно ли нам нужно это конкретное, перечисляя каждый зависимый репозиторий каждой зависимости?

Я также попытался использовать hex вместо:

    {jsx, ".*"},
    {ranch, ".*"},
    {trails, ".*"},
    {cowboy_swagger, "2.1.0"}

но я все еще получил:

Dependency not available: jsx-.* (undefined)
Dependency not available: trails-.* (undefined)
Dependency not available: cowboy_swagger-2.1.0 (undefined)
ERROR: compile failed while processing 

Я пропустил другую зависимость?

1 Ответ

1 голос
/ 12 ноября 2019

Проблема возникает из-за того, что cowboy_swagger создан для использования с rebar3 и не совместим со старой арматурой, но erlang_rest_api использует старую арматуру, как вы можете видеть в ее Makefile.

Решение вашей проблемы может быть таким же простым, как использование rebar3 для построения проекта. Но будьте осторожны, если вы сделаете это, так как это сломает make run и make run-local. Вам придется выяснить, как добиться тех же результатов, используя релизы.

...