erlangの編集、コンパイル、実行/デバッグサイクルをスピードアップする
質問
Erlangアプリケーションを編集し、コードをコンパイルして実行中の結果を表示する最速の方法は何ですか?できれば、最後のステップでエルランシェルにジャンプすることができます。
私の現在の初心者のセットアップ:
- アプリをコンパイルし、ERLシェルを起動するスクリプト。
- 次に、アプリケーションを入力します:start(foo)。
- タイプミスを修正すると、c( 'module')でモジュールを再コンパイルし、アプリを再起動します。
より速い方法はありますか?ところで。私の選択した編集者はEMACSです。
解決
これが私のセットアップです:
- 開発中に、私は別のターミナルウィンドウにErlangシェルを開いたままにします。
- 編集者からの編集を開始します(キーの組み合わせを使用)、または入力するだけで
make
ソースディレクトリ内。 - コンパイル後、タイピングしてすべての変更モジュールを一度にロードします
l()
エルランシェルで。これと他の便利なマクロをここで見つけることができます: http://www.snookles.com/erlang/user_default.erl
Erlangアプリケーション全体を再起動する必要はほとんどありません。リロード変更モジュールはより一般的なユースケースであり、通常、変更を適用するのに十分です。
アプリケーションの開始について:アプリケーションが他のアプリケーションに依存している場合、アプリケーション:start()はすべての依存関係を開始するまで失敗します。そのため、ヘルパー機能を書くことが一般的です <your-app-name>:start()
. 。これが次のとおりです 例. 。別の有用な機能はです <your-app-name>:stop()
.
これらすべての手法が適用されると、ワークフローが次のようになります。
- Erlangシェルを起動して、開いたままにしてください。タイプ
<your-app-name>:start().
- 変更を加えます。コンピレーションを実行します。タイプ
l()
あなたのerlangシェルで。 - 変更が必要な場合、アプリケーションの再起動が必要な場合、タイプします
<your-app-name>:stop(), <your-app-name>:start().
他のヒント
編集とコンパイルは、私が使用するIDE(Eclispe with Erlide)によって行われます。
また、VMのアプリケーションと役立つツールを開始するスクリプトを作成しました。スクリプトは開発時間にのみ使用されます。
変更されたソースをリロードしてからビンをコンパイルするために、mochiwebのリロダーを使用します。リロダーはビン監督を観察し、変更がある場合、モデルをロードして、内部がある場合はユーニットテストを実行します。
例:
ERL +A 5 +K TRUE -NAME @127.0.0.1 -Pa $ PWD/EBIN $ PWD/TEST $ PWD/DEPS/*/EBIN -BOOT START_SASL -S RELOADER -S TOOLBAR -S
あなたも試すことができるのはerlbuildです。 ErlBuildは、ソースファイルを変更したSRCディレクトリに表示される簡単なアプリケーションであり、モジュールをコンパイルしてロードするよりも、ファイルが見つかった場合はファイルを見つけた場合です。モジュールを読み込んだ後、erlbuildはモジュールのテストを実行します。
プロジェクトは以下を見つけることができます: https://github.com/uffa/erlbuild
〜ulf