システム内のすべてをビルドしてリリースを生成する方法を rebar が認識できるように、ディレクトリ構造とその内容が配置されていることを確認する必要があります。ディレクトリ構造は次のようになります。
project
|
-- rel
|
-- deps
|
-- apps
|
-- myapp
| |
| -- src
| -- priv
|
-- another_app
rel
ディレクトリには、リリースを生成するために必要なすべての情報が保持されます。apps
ディレクトリは、プロジェクトを構成するアプリケーションが存在する場所です。アプリケーションの依存関係はdeps
ディレクトリに存在します。ディレクトリの下のmyapp
やなどの各アプリは、独自のファイルを持つことができます。ここではそのようなアプリケーションが 2 つ以上存在する可能性がありますが、通常は 1 つだけで、他のすべては依存関係になります。another_app
apps
rebar.config
最上位project
ディレクトリには、次のrebar.config
ような内容のファイルもあります。
{sub_dirs, ["rel", "apps/myapp", "apps/another_app"]}.
{lib_dirs, ["apps"]}.
必要に応じて、rebar を使用してアプリケーション スケルトンからアプリを生成できます。
cd apps
mkdir myapp another_app
( cd myapp && rebar create-app appid=myapp )
( cd another_app && rebar create-app appid=another_app )
アプリケーションに依存関係がある場合は、rebar.config
そのディレクトリに を追加し、そこで各依存関係を宣言する必要があります。たとえば、アプリケーションバージョン 1.2 にmyapp
依存する場合は、次の内容で作成します。foo
apps/myapp/rebar.config
{deps,
[{foo, "1.*", {git, "git://github.com/user/foo.git", {tag, "foo-1.2"}}}]
}.
を実行するrebar get-deps
と、rebar はdeps
すべての依存関係を保持する最上位ディレクトリにデータを取り込み、deps
必要に応じて作成します。必要に応じて、最上位でrebar.config
依存関係を宣言することもできます。
また、リリースに必要なノードを生成する必要があります。
cd ../rel
rebar create-node nodeid=project
reltool.config
次に、前の手順で生成されたファイルを変更する必要があります。変更する必要があります
{lib_dirs, []},
に
{lib_dirs, ["../apps", "../deps"]},
正しい実行に必要なアプリケーションのみがリリースに含まれるように、行の直後に{incl_cond, derived},
追加します。{mod_cond, derived},
次に、atom が表示される場所を、ディレクトリ'project'
の下のアプリケーションに置き換える必要があります。apps
この例では、この部分を次のように変更します。
{rel, "project", "1",
[
kernel,
stdlib,
sasl,
project
]},
これに:
{rel, "project", "1",
[
kernel,
stdlib,
sasl,
myapp,
another_app
]},
この部分を変更します。
{app, project, [{mod_cond, app}, {incl_cond, include}]}
これに:
{app, myapp, [{mod_cond, app}, {incl_cond, include}]},
{app, another_app, [{mod_cond, app}, {incl_cond, include}]}
次の行を追加する必要がある場合もあります。
{app, hipe, [{incl_cond, exclude}]},
hipe
リリースの生成中またはリリースを実行しようとしたときにエラーが発生することがあるため、アプリケーションを除外します。最初はそれなしで試してみてください。ただしhipe
、リリースの生成時に関連するエラーが表示される場合、または生成されたリリースを実行しようとするとこの種のエラーが発生する場合は追加してください。
{"init terminating in do_boot",{'cannot load',elf_format,get_files}}
追加する必要があります。
これらすべてが整ったら、次を実行できます。
rebar get-deps compile generate
リリースを正常に生成できるはずです。rebar generate
ディレクトリではなく最上位で実行するとrel
、次のような無害な警告が表示されることに注意してください。これは無視できます。
WARN: 'generate' command does not apply to directory /path/to/project
最後に、リリースを実行できます。対話型コンソールで実行する方法は次のとおりです。
$ ./rel/project/bin/project console
Exec: /path/to/project/rel/project/erts-6.2/bin/erlexec -boot /path/to/project/rel/project/releases/1/project -mode embedded -config /path/to/project/rel/project/releases/1/sys.config -args_file /path/to/project/rel/project/releases/1/vm.args -- console
Root: /path/to/project/rel/project
Erlang/OTP 17 [erts-6.2] [source] [64-bit] [smp:8:8] [async-threads:10] [kernel-poll:false]
Eshell V6.2 (abort with ^G)
(project@127.0.0.1)1>
または、実行してバックグラウンドで開始することもできます./rel/project/bin/project start
。引数なしで実行./rel/project/bin/project
すると、使用可能なすべてのオプションが表示されます。