main_app、app1、app2 を含む包括的なプロジェクトがあります。main_app は単独で動作することも、app1 および app2 と連携して管理することもできます。
app1 と app2 の起動に関する決定は、外部側 (ユーザーが入力した特別な構成ファイル) にあります。
その一部である rebar.config を使用します。
{lib_dirs, ["apps"]}.
{sub_dirs, [
"apps/main_app",
"apps/app1",
"apps/app2"
]}.
{relx, [{release, {main_app, "0.8.6"},
[kernel,
sasl,
main_app]},
{sys_config, "./config/sys.config"},
{vm_args, "./config/vm.args"},
{dev_mode, true},
{include_src, true},
{include_erts, false},
{extended_start_script, true}]
}.
{profiles, [
{prod, [
{relx, [
{dev_mode, false},
{include_erts, false},
{include_src, false},
{sys_config, "./config/prod_sys.config"},
{vm_args, "./config/prod_vm.args"}
]}
]}
]}.
使用sudo rebar3 shell
すると、app1 と app2 を管理できます。しかし、リリースをsudo rebar3 as prod tar
- でパックすると、app1 と app2 のビーム ファイルを含まない tar アーカイブを取得します。リストのリリース セクションに app1 と app2 を配置するとkernel, sasl, main_app
、必要なアプリがリリースに追加されますが、自動的に起動されます (自分で起動する必要があります)。
すべてのライブラリまたはアプリケーションを tar リリースに追加するように rebar を構成する方法を教えてください。
前もって感謝します!