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"}]}. 

私たちのプロジェクトでsmokkfiskurmochiwebを使用していると想像してください。 依存関係を取得するために必要なのは、 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入力コマンドの自動追加という形で素敵な小さなパンが追加されています。 プラグインはこちらで見つけることができます。


参照資料



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



Source: https://habr.com/ru/post/J319950/


All Articles