erlang - ¿Cómo manejar deps durante el uso de barras de refuerzo para lanzar?
rebar (1)
Estoy utilizando rebar generate
para manejar el lanzamiento, pero cuando inicio la aplicación, los datos que uso no se encontrarán.
Puedo iniciar la aplicación manualmente usando erl -pa ./ebin ./deps/*/ebin -s myapp
.
Me pregunto cómo configurar rebar.config
y reltool.config
para manejar dependencias. Gracias.
Para que reltool genere una versión que incluya las dependencias, deberá agregarlas a reltool.config
. Tengo una aplicación llamada drill_instructor
, que tiene el siguiente reltool.config
. Las líneas como {app, stdlib, [{incl_cond, include}]},
dicen a reltool que incluya esa aplicación en el lanzamiento. También agregué deps a the lib_dirs
configuración the lib_dirs
.
{sys, [
{lib_dirs, ["../deps"]},
{erts, [{mod_cond, derived}, {app_file, strip}]},
{app_file, strip},
{rel, "drill_instructor", "1",
[
kernel,
stdlib,
sasl,
crypto,
ranch,
jiffy,
cowboy,
jiffy,
drill_instructor
]},
{rel, "start_clean", "",
[
kernel,
stdlib
]},
{boot_rel, "drill_instructor"},
{profile, embedded},
{incl_cond, exclude},
{excl_archive_filters, [".*"]}, %% Do not archive built libs
{excl_sys_filters, ["^bin/.*", "^erts.*/bin/(dialyzer|typer)",
"^erts.*/(doc|info|include|lib|man|src)"]},
{excl_app_filters, ["/.gitignore"]},
{app, sasl, [{incl_cond, include}]},
{app, crypto, [{incl_cond, include}]},
{app, stdlib, [{incl_cond, include}]},
{app, kernel, [{incl_cond, include}]},
{app, cowboy, [{incl_cond, include}]},
{app, ranch, [{incl_cond, include}]},
{app, jiffy, [{incl_cond, include}]},
{app, drill_armory, [{incl_cond, include}]},
{app, drill_instructor, [{incl_cond, include}, {lib_dir, ".."}]}
]}.
{target_dir, "drill_instructor"}.
{overlay, [
{mkdir, "log/sasl"},
{copy, "files/erl", "/{/{erts_vsn/}/}/bin/erl"},
{copy, "files/nodetool", "/{/{erts_vsn/}/}/bin/nodetool"},
{copy, "files/drill_instructor", "bin/drill_instructor"},
{copy, "files/drill_instructor.cmd", "bin/drill_instructor.cmd"},
{copy, "files/start_erl.cmd", "bin/start_erl.cmd"},
{copy, "files/install_upgrade.escript", "bin/install_upgrade.escript"},
{copy, "files/sys.config", "releases//{/{rel_vsn/}/}/sys.config"},
{copy, "files/vm.args", "releases//{/{rel_vsn/}/}/vm.args"}
]}.
En el rebar.config, también agregué rel como un sub_dir
:
{sub_dirs, ["rel"]}.