Erlang ワークフローをどのように編成していますか? 私は今、いくつかのErlangを学んでおり、各編集後にRebarを使用し、リリース全体を再コンパイル、再構築、再起動しています(OTP風に保つようにしています)。これを行うためのよりスマートな方法があると確信しています。
4 に答える
恐ろしい編集/再コンパイル/再起動ループを回避するために同期を使用しています。ソースファイルへの変更を監視し、変更されたモジュールのみを再コンパイルして再ロードします。エラーと警告をコンソールに出力し、通知に送信します-可能な場合は送信/うなり声を上げます。
走るのと同じくらい簡単ですsync:go().
より良い例については、この鉄筋テンプレートをご覧ください。
クラスタで開発している場合、もう1つの優れた機能はsyncの「パッチモード」です。「パッチモード」では、syncがモジュールを正常にコンパイルするたびに、コンパイルされたコードをクラスターに接続されているすべてのノードに送信し、モジュールをリロードします。
Chicago Boss では、Web ブラウザで [更新] をクリックするだけです。
あなたの目標が Web 開発でなくても、現在のワークフローよりも楽しい Erlang の学習方法になるかもしれません。CB は、コンパイル エラーと実行時エラーをブラウザーに正しく表示します。
Etorrent では、あなたが好むかもしれないちょっとしたトリックを使用しています。
開発リリースをビルドしたらmake console
、次の定義を持つコマンドを実行できます。
console:
dev/etorrent-dev/bin/etorrent console \
-pa ../../apps/etorrent/ebin
基本的に、ほとんどのものにリリース ebin を使用しますが、通常ソフトウェアをビルドする時点で、アプリケーション ebin をオーバーライドして外部に配置します。コンソールを実行すると、コードを編集したり、実行したりmake
(Emacs でキーの組み合わせを押した場合)、エラーを修正したり、make
再度実行したりできます。変更に満足したら、コンソール (erlang シェル) に移動して実行l(ModuleToLoad)
し、その時点で実行中のシステムに新しいコードが挿入されます。OTP は、ホット デプロイされたコードの変更を自動的に取得し、プロセスを変更します。基本的に、コードの作業中に再起動する必要はほとんどありません。
最近ではテストもmake test
用意されているため、新しいコードが機能することをもう少し保証したい場合は、挿入する前に、etorrent で実行して、新しく形成されたコードでテスト フレームワークを実行することができます。