私はアーランが初めてです。mongooseim モジュール内でライブラリを使用できるように、mongoose ソースを使用して RabitMQ Erlang AMQP クライアント ライブラリを構築しようとしています。ここからライブラリのソースをダウンロードしました。.ez ファイルには、ebin と includes の 2 つのディレクトリが含まれています。ebin には .beam ファイルが含まれ、include には erlang .hrl ファイルが含まれます。すべての .hrl ファイルを mongooseim の apps/ejabberd/include ディレクトリにドロップし、すべての .beam ファイルを ebin ディレクトリにドロップすると機能しますか? mongooseim のコンパイルには make と make rel を使用しています。
2 に答える
あなたが提案する方法は機能しますが、よりクリーンなアプローチが可能です。Makefile を微調整して、ビルドしたばかりの MongooseIM リリース ディレクトリにライブラリを単純にコピーすることもできますが、もっと良い方法があります。
amqp_client-3.5.1.ez
内にダウンロードして解凍しますmongooseim/apps/
。- 必要に応じて、git リポジトリにチェックイン
mongooseim/apps/amqp_client-3.5.1/
します。これにより、リポジトリを複製するたびに再度ダウンロードする必要がなくなります。 MongooseIM
reltool
の依存関係とコンポーネントをバンドルするのと同じように、アプリケーションをバンドルします。つまり、次のパッチを適用します。diff --git a/rel/reltool.config.script b/rel/reltool.config.script index 731d58c..395a73f 100644 --- a/rel/reltool.config.script +++ b/rel/reltool.config.script @@ -20,7 +20,9 @@ BaseAppsToRun = [compiler, cowboy, fusco, folsom, - exometer], + exometer, + xmerl, + amqp_client], AppsToRunIn = BaseAppsToRun ++ proplists:get_value(apps_to_run, Conf, []), @@ -44,7 +46,9 @@ BaseAppsToInclude = AppsToRun ++ alarms, idna, recon, - setup + setup, + xmerl, + amqp_client ],
xmerl
は の依存関係でamqp_client
あるため、リリースにも追加する必要があることに注意してください。make rel
amqp_client
MongooseIM にバンドルされたリリースを再ビルドします。サーバーを実行し (たとえば
bin/mongooseimctl live
、ディレクトリ内で)、サーバーが利用可能で実行mongooseim/rel/mongooseim
中であることを確認します。amqp_client
(mongooseim@localhost)1> application:which_applications(). ... snipped ... {amqp_client,"RabbitMQ AMQP Client","3.5.1"}, {xmerl,"XML parser","1.3.7"}, ... snipped ... (mongooseim@localhost)2> amqp_client:start(). {error,{already_started,amqp_client}}
(エラーは気にしないでください。もちろん、既に開始されている必要があります。)
Jon Brisbin の rebar フレンドリーな amqp ライブラリ ( https://github.com/jbrisbin )を使用すると、はるかに簡単でクリーンであることがわかりました。私がしなければならなかったのは、rebar.config ファイルの依存関係リストに rabbit_common と amqp_client リポジトリを追加することだけでした。
diff --git a/rebar.config b/rebar.config
index c719d98..cafdb0f 100644
--- a/rebar.config
+++ b/rebar.config
@@ -36,6 +36,8 @@
{pa, ".*", {git, "git://github.com/lavrin/pa.git", "c616d3f9"}},
{ecoveralls, ".*", {git, "git://github.com/nifoc/ecoveralls.git", "40fa0d2f2057fff29e964f94fccf6ef2f13d34d2"}},
{mustache, ".*", {git, "git://github.com/mojombo/mustache.erl.git", "d0246fe143058b6404f66cf99fece3ff6e87b7ed"}},
+ {rabbit_common, ".*", {git, "git://github.com/jbrisbin/rabbit_common.git", "rabbitmq-3.5.0"}},
+ {amqp_client, ".*", {git, "git://github.com/jbrisbin/amqp_client.git", {tag, "rabbitmq-3.5.0"}}},
{recon, "2.2.1", {git, "git://github.com/ferd/recon.git", {tag, "2.2.1"}}}
]}.
その後、作成してrelを作成します。以下を使用して、任意の mongooseim モジュールから amqp_client ヘッダーを含めることができます。
-include_lib("amqp_client/include/amqp_client.hrl").