rebar3を使用してErlangでプロジェクトを管理する







Rebar3はErlangプログラミング言語用のツールで、Erlangで記述されたプロジェクトを(Elixirで)簡単かつ便利に管理できます。







長い間Erlangを知っていた人は古い鉄筋を知っていて、おそらくそれをまだ使用しています。 多くの人(特に、はるかに発達したエコシステムを持つ他の言語から来た人)は鉄筋が好きではなく、時々ここで「恥ずべき偽物」と呼びます。これはPerlスクリプトに置き換えることができます。 幸いなことに、私は(上記の言葉の著者とは異なり)鉄筋をあまり使う必要はありませんでしたが、鉄筋は基本的なことでかなりうまくいきました。 しかし、「悪くない」は「良い」ではありません。 この状況に多くの反対意見があり(「悪くない」)、したがって、彼らは現在活発に開発されているrebar3



プロジェクトの形で第二の人生を強化することを決めました。 とりわけ、著名なフレッド・ヘーバートirは、「アーランを探検してください」という本を世界に紹介し、プロジェクトに取り組んでいます。







この記事での私の目標は、 rebar3



注意を引くことrebar3



。 すでにrebar/rebar3



精通しているrebar/rebar3



、この記事はあまりrebar/rebar3



ませんが、Erlangの世界の初心者は興味があるかもしれません。 rebar3



(インストール、コンパイルなど)から始める方法について説明します。







Rebar3セットポイント



インストールに関しては、2つの方法があります。







  1. すでにコピーされたrebar3ファイルをダウンロードします。
  2. ソースコードからすべてを収集します。


誰かを怒らせないために、私は両方の方法を示します。







方法1:







 ~ wget https://s3.amazonaws.com/rebar3/rebar3 && chmod +x rebar3
      
      





2番目の方法:







 ➜ ~ git clone https://github.com/erlang/rebar3.git ➜ cd rebar3 ➜ ./bootstrap
      
      





ここで、ファイルパスを$PATH



環境変数に追加する必要があります。







これは次のように行われます。







 ➜ ./rebar3 local install ===> Extracting rebar3 libs to ~/.cache/rebar3/lib... ===> Writing rebar3 run script ~/.cache/rebar3/bin/rebar3... ===> Add to $PATH for use: export PATH=$PATH:~/.cache/rebar3/bin
      
      





その後、入力を求められたコマンドを実行するか、この行を*rc



ファイル( ~/.zshrc



~/.bashrc



)に追加します。







たとえば、次のように:







 ➜ ~ echo "export PATH=$PATH:~/.cache/rebar3/bin" >> ~/.zshrc
      
      





最初の申請



Rebar3(ほとんどの自尊心のあるプロジェクト管理ツールと同様)を使用すると、既製のテンプレートからアプリケーションレイアウトを作成できます。 rebar3はOTPアプリケーション専用の構造を作成することに注意してください。 以下に利用可能なテンプレートのリストを示しますが、説明を翻訳する意味はわかりません。







 app: Complete OTP Application structure. cmake: Standalone Makefile for building C/C++ in c_src escript: Complete escriptized application structure plugin: Rebar3 plugin project structure release: OTP Release structure for executable programs lib: Complete OTP Library application (no processes) structure
      
      





このapp



のみ興味があり、このテンプレートに基づいてアプリケーションを作成します。







 ➜ ~ rebar3 new app habrapp ===> Writing habrapp/src/habrapp_app.erl ===> Writing habrapp/src/habrapp_sup.erl ===> Writing habrapp/src/habrapp.app.src ===> Writing habrapp/rebar.config ===> Writing habrapp/.gitignore ===> Writing habrapp/LICENSE ===> Writing habrapp/README.md
      
      





テンプレートが作成されました。 次に、プロジェクトの構造を見てみましょう。







 ➜ ~ cd habrapp ➜ ~/habrapp tree . ├── LICENSE ├── README.md ├── rebar.config └── src ├── habrapp_app.erl ├── habrapp.app.src └── habrapp_sup.erl
      
      





通常の構造化されたErlangアプリケーション。 私が言いたいのは、先を見据えて、 rebar.config



アプリケーションに関するメタデータ(依存関係データを含む)を保存するために使用されるということrebar.config









あなたが双方向性の恋人なら、rebar3はあなたを失望させません。 シェルモードに簡単に切り替えることができます。







 ➜ ~/habrapp rebar3 shell ===> Fetching rebar3_hex ({pkg,<<"rebar3_hex">>,<<"3.0.0">>}) ===> Downloaded package, caching at /home/lk/.cache/rebar3/hex/default/packages/rebar3_hex-3.0.0.tar ===> Compiling rebar3_hex ===> Verifying dependencies... ===> Compiling habrapp Erlang/OTP 18 [erts-7.3] [source] [64-bit] [smp:4:4] [async-threads:0] [kernel-poll:false] Eshell V7.3 (abort with ^G) 1> application:start(habrapp). ok 2> application:stop(habrapp). =INFO REPORT==== 19-Jan-2017::14:03:38 === application: habrapp exited: stopped type: temporary ok
      
      





ところで、Fred HebertのWebサイトの記事全体がシェルのトピックに当てられています。







パッケージを追加または削除する



最初に行う必要があるのは、 rebar3



というrebar3



プラグインをインストールすることです。 これを行うには、 rebar.config



ファイルを編集し、必要なプラグインの名前をアトムの形式で{plugins, [rebar3_hex]}.



横のタプルに追加する必要があります: {plugins, [rebar3_hex]}.









その後、次のことを行います。







 ➜ ~/habrapp rebar3 update ===> Fetching rebar3_hex ({pkg,<<"rebar3_hex">>,<<"3.1.0">>}) ===> Downloaded package, caching at /home/lk/.cache/rebar3/hex/default/packages/rebar3_hex-3.1.0.tar ===> Compiling rebar3_hex ===> Updating package registry... ===> Writing registry to /home/lk/.cache/rebar3/hex/default/registry ===> Generating package index... ===> Writing index to /home/lk/.cache/rebar3/hex/default/packages.idx
      
      





ここで、rebar3はrebar.config



ファイルから情報をrebar.config



ます。 そして、 {plugins, [rebar3_hex]}.



を常に追加したくない場合{plugins, [rebar3_hex]}.



rebar.config



ファイルに追加し、 ~/.config/rebar3/rebar.config



にあるグローバル構成ファイルrebar3に追加します。rebar3はグローバル構成ファイルからすべてを自動的に取得します。







プロジェクトが他のプロジェクトに基づいて動作する場合は、それを取得できます(hex.pmにある場合)。







プロジェクトの検索は非常に簡単です。







 ➜ ~/habrapp rebar3 hex search smokkfiskur smokkfiskur: 0.1.1, 0.1.2, 0.1.3
      
      





探しているプロジェクトが存在することを確信したら、それを手に入れることができます。 これを行うには、 rebar.config



ファイル(グローバルではない)を編集し、 deps



ラベルの横に目的のパッケージの名前を示します(はい、アトムの形式で)。







 {deps, [smokkfiskur, mochiweb]}.
      
      





必要に応じて、少し具体性を追加できます。







 {deps, [{smokkfiskur, "0.1.3"}, {mochiweb, "2.15.0"}]}.
      
      





私たちのプロジェクトでsmokkfiskur



mochiweb



を使用していると想像してください。 依存関係を取得するために必要なのは、 rebar3 compile



を実行することrebar3 compile



です。







 ➜ ~/habrapp rebar3 compile ===> Verifying dependencies... ===> Fetching mochiweb ({pkg,<<"mochiweb">>,<<"2.15.0">>}) ===> Downloaded package, caching at /home/lk/.cache/rebar3/hex/default/packages/mochiweb-2.15.0.tar ===> Fetching smokkfiskur ({pkg,<<"smokkfiskur">>,<<"0.1.3">>}) ===> Downloaded package, caching at /home/lk/.cache/rebar3/hex/default/packages/smokkfiskur-0.1.3.tar ===> Compiling mochiweb ===> Compiling smokkfiskur ===> Compiling habrapp
      
      





依存関係は、 pip freeze



入力するよりも簡単です(ほぼ±1文字):







 ➜ ~/habrapp rebar3 deps mochiweb* (package) smokkfiskur* (package)
      
      





パッケージの削除も簡単です。 リスト{deps, [smokkfiskur]}



からプロジェクト名を削除し、以下に示すコマンドを入力するだけです。







 ➜ ~/habrapp rebar3 unlock ➜ ~/habrapp rebar3 deps smokkfiskur* (package)
      
      





clean



コマンドを使用して、プロジェクトからすべてのコンパイル済み*.beam



ファイルを削除できます。







 ➜ rebar3 clean
      
      





ドキュメントを操作する



ドキュメントはプロジェクトの重要な部分であり、ドキュメントとの便利な作業は非常に重要です。 ドキュメントを生成する単純なrebar3 edoc



よりも便利なものはありますか?







 ➜ ~/habrapp rebar3 edoc ===> Linking _build/default/plugins/rebar3_hex to _build/docs/plugins/rebar3_hex ===> Verifying dependencies... ===> Linking _build/default/lib/smokkfiskur to _build/docs/lib/smokkfiskur ===> Compiling habrapp ===> Running edoc for habrapp
      
      





テスト中



Rebar3では、Eunitテストと共通テストの両方を実行できます。 アプリケーションのテストは作成しませんでしたが、実行方法は引き続き確認できます。







 ➜ ~/habrapp rebar3 ct ➜ ~/habrapp rebar3 eunti
      
      





次のようなテストでコードカバレッジを確認できます。







 ➜ rebar3 cover
      
      





配布



パッケージの配布は重要であり、すでに扱ったrebar3_hex



プラグインはこれに役立ちます。 そこでパッケージを公開するには、hex.pmにアカウントが必要です。 登録は非常に簡単で、コンソールで直接行うことができます。







 ➜ ~/habrapp rebar3 hex user register By registering an account on Hex.pm you accept all our policies and terms of service found at https://hex.pm/policies Username: ([])>
      
      





登録が完了したら、 publish



コマンドを使用してhex.pmにプロジェクトを公開できます。







 ➜ ~/habrapp rebar3 hex publish ===> Verifying dependencies... Publishing habrapp 0.1.0 Description: An OTP application Dependencies: smokkfiskur 0.1.3 Included files: /home/lk/habrapp/LICENSE /home/lk/habrapp/README.md /home/lk/habrapp/rebar.config /home/lk/habrapp/rebar.lock /home/lk/habrapp/src/habrapp.app.src /home/lk/habrapp/src/habrapp_app.erl /home/lk/habrapp/src/habrapp_sup.erl Maintainers: Licenses: Links: Build tools: rebar3 Before publishing, please read Hex CoC: https://hex.pm/policies/codeofconduct Proceed? ("Y")> n Goodbye...
      
      





テンプレートよりも意味のあるものを投稿する場合は、 Y



を入力する必要があります。 価値のないアプリケーションを公開せず、このパッケージリポジトリの純粋な純度を損ないません。







お団子



*nix



環境で動作する幸運な人のために、 zsh



入力コマンドの自動追加という形で素敵な小さなパンが追加されています。 プラグインはこちらで見つけることができます。







参照資料





私が伝えたかったのはそれだけです。 ご清聴ありがとうございました!








All Articles