Erlang Rebar使用ガイドの1つ:入門編
2588 ワード
Erlang Rebar使用ガイドの1つ:入門編
全文ディレクトリ:
https://github.com/rebar/rebar/wiki
本章原文:
https://github.com/rebar/rebar/wiki/Getting-started
Rebarは豊富なErlang構築ツールです.Erlang/OTPプロジェクトのコンパイル、テスト、依存管理、パッケージパブリケーションなどに使用します.Rebarは、プロジェクトに簡単に埋め込むことができる独自のスクリプトです.
1コンパイルrebar
$ git clone git://github.com/rebar/rebar.git
$ cd rebar
$ ./bootstrap
コマンドの説明を表示します. $ ./rebar -c
$ ./rebar help clean
2入門例
2.1プログラムディレクトリの作成
$ mkdir myapp
$ cd myapp
「1コンパイルrebar」で得られたrebarをmyappディレクトリにコピー $ cp ../rebar/rebar .
2.2最初のrebarプロジェクトの作成
$ ./rebar create-app appid=myapp
$ touch rebar.config
上記のコマンドを実行すると、myapp/srcに3つのファイルが生成されます.
myapp.app.src-OTPアプリケーションリソース
myapp_app.Erl-OTPアプリケーションを実装するbehaviour
myapp_sup.Erl-最上位のOTP Supervisor behaviour
2.3プロジェクトのコンパイル
$ ./rebar compile
上記のコマンドが実行すると、src/erlファイルに対応するebinディレクトリが生成されます.beamファイル
src/myapp.app.srcはebin/myappを生成する.app
アイテムのクリーンアップ $ ./rebar clean
2.4試験項目
ReparはEUnitとCommon Testのテストフレームワークをサポートします.プロジェクトにEUintユニットテストを追加し、次のコードを追加します.
src/myapp_app.erl:
-export([start/2, stop/1]). 後に追加: %% eunit testing
-ifdef(TEST).
-include_lib("eunit/include/eunit.hrl").
-endif.
ファイルの最後に追加: %% eunit testing
-ifdef(TEST).
simple_test() ->
ok = application:start(myapp),
?assertNot(undefined == whereis(myapp_sup)).
-endif.
ifdefマクロはテストフェーズコードを示し、製品にコンパイルされません.
コンパイルとテストを開始します. $ ./rebar compile eunit
以上のコマンドはコンパイルを2回、ebin/に1回、出力.eunit/:
==> myapp (compile) Compiled src/myapp_app.erl Compiled src/myapp_sup.erl ==> myapp (eunit) Compiled src/myapp_sup.erl Compiled src/myapp_app.erl Test passed. =INFO REPORT==== 30-Nov-2014::03:50:01 === application: myapp exited: killed type: temporary
2.5テストコードオーバーライド率統計
myapp/rebar.configに次の行を追加します. {cover_enabled, true}.
再実行: $ rebar compile eunit
生成された統計ページは次のとおりです.eunit/index.html
$ git clone git://github.com/rebar/rebar.git
$ cd rebar
$ ./bootstrap
$ ./rebar -c
$ ./rebar help clean
$ mkdir myapp
$ cd myapp
$ cp ../rebar/rebar .
$ ./rebar create-app appid=myapp
$ touch rebar.config
$ ./rebar compile
$ ./rebar clean
%% eunit testing
-ifdef(TEST).
-include_lib("eunit/include/eunit.hrl").
-endif.
%% eunit testing
-ifdef(TEST).
simple_test() ->
ok = application:start(myapp),
?assertNot(undefined == whereis(myapp_sup)).
-endif.
$ ./rebar compile eunit
{cover_enabled, true}.
$ rebar compile eunit