Почему моя оболочка Erlang не загружает зависимости арматуры?
У меня есть простой проект с использованием арматуры с этим конфигом:
{sub_dirs, [
"gen",
"apps/basilisk_server",
"rel"
"apps/*"
"ebin"
"deps/*/ebin"
]}.
{erl_opts, [debug_info, fail_on_warning]}.
{
deps,
[
{ email_address, ".*", { git, "git://github.com/mswimmer/erlang-email-address.git", "master"}},
{ gen_smtp , ".*", { git, "https://github.com/Vagabond/gen_smtp.git" , "master"}},
{ pat , ".*", { git, "https://github.com/selectel/pat.git" , "master"}},
{ thrift , ".*", { git, "https://github.com/MustyMustelidae/ThriftErl.git", "master"}}
]
}.
Моя структура каталогов:
+---.rebar
+---deps
| +---edown
| | +---.rebar
| | +---bin
| | +---doc
| | +---ebin
| | +---priv
| | | \---scripts
| | +---samples
| | \---src
| +---email_address
| | +---.rebar
| | +---ebin
| | +---src
| | \---test
| +---gen_smtp
| | +---.rebar
| | +---ebin
| | +---src
| | +---test
| | \---testdata
| +---gproc
| | +---.rebar
| | +---doc
| | +---ebin
| | +---include
| | +---patches
| | | +---gen_leader
| | | +---kernel
| | | \---stdlib
| | +---priv
| | +---reference
| | +---src
| | +---test
| | | \---eqc
| | \---tetrapak
| +---lager
| | +---.rebar
| | +---ebin
| | +---include
| | +---src
| | \---test
| +---pat
| | +---.rebar
| | +---ebin
| | +---include
| | \---src
| +---proper
| | +---.rebar
| | +---doc
| | +---ebin
| | +---examples
| | +---include
| | +---src
| | \---test
| +---tempo
| | +---.rebar
| | +---c_src
| | +---doc
| | | \---utf8
| | +---ebin
| | +---src
| | \---test
| \---thrift
| +---.rebar
| +---ebin
| +---include
| +---out
| | \---production
| | \---erl
| +---src
| \---test
+---ebin <--- My .app/.beam
\---src <--- My source files
\---gen <---More source files
(Извините за стену) У каждой из зависимостей есть файл.app в папке ebin, и я запускаю команду erl -pa apps/*/ebin -pa ebin -pa deps/*/ebin
, Я ожидаю, что я смогу бежать application:ensure_all_started(somedep).
где "somedep" - это имя зависимости с.app, определенной в ее папке ebin. Но когда я запускаю его для любого из них, я получаю ошибку {error,{somedep,{"no such file or directory","somedep.app"}}}
, Когда я запускаю его для собственного приложения, я получаю правильный ответ ({ok,_}). Поскольку я не могу запустить приложения зависимостей, мое собственное приложение завершается с undef
ошибка. Я пропускаю какой-то шаг, чтобы зарегистрировать мои.app файлы в оболочке?
1 ответ
Командная оболочка Windows не раскрывает подстановочные знаки в apps/*/ebin
а также deps/*/ebin
, поэтому путь загрузки Erlang не устанавливается должным образом.