-1

私のアプリは Mochiweb を使用しています。

Mochiweb ファイルがディレクトリに存在し、myapp/deps/mochiwebディレクトリでrebarmake を実行するとコンパイルされることに気付きましたmyapp

ibrowseアプリに http リクエストを行ういくつかのテストを作成するために追加したいと思いました。そこでibrowse、github からmyapp/deps/ibrowseディレクトリにクローンを作成しました。

.beamしかし、Erlang はファイルを取得する場所を認識していないようで、モジュールibrowseを使用するすべてのテストが失敗します。ibrowse

myapp
 ebin %%compiled tests reside here, tests which use ibrowse fail (badarg)
 deps
  mochiweb 
  ibrowse
   ebin %%compiled ibrowse module resides here
 src
 tests

Mochiweb ベースのアプリで他の Erlang/OTP 外部ライブラリを使用するにはどうすればよいですか?

そのために rebar.config または Makefile を編集する必要がありますか? それとも、_app.src ファイルを編集する必要がありますか?

編集: myapp_sup.erl ファイル内のディレクトリのリストを編集する必要がありますか? ( myapp_deps:local_path(["priv", "www"])

PS アプリはすべての mochiweb.beam ファイルが存在する場所をどのように認識しますか? (たとえば、ジェネリックmyapp_web.erlはモジュールへの呼び出しを使用しますが、ディレクトリmochiweb_httpにはありません)。mochiweb_http.beammyapp/ebin

4

2 に答える 2

0

次のコードを myapp_web.erl に追加すると、問題が解決しました。

ibrowse:start()

デフォルトでは、Mochiweb は同じ関数で開始されます。

mochiweb_http:start()...

これが適切な方法かどうかはわかりませんが、機能します。

于 2012-05-18T23:36:18.400 に答える
0

rebar の依存関係は、rebar.config ファイルを介して追加されます。

%% What dependencies we have, dependencies can be of 3 forms, an application
%% name as an atom, eg. mochiweb, a name and a version (from the .app file), or
%% an application name, a version and the SCM details on how to fetch it (SCM
%% type, location and revision). Rebar currently supports git, hg, bzr and svn.
{deps, [application_name,
        {application_name, "1.0.*"},
        {application_name, "1.0.*",
         {git, "git://github.com/basho/rebar.git", {branch, "master"}}}]}.

次に、Erlang のリリースと、rebar によるリリース処理について調べたいと思うでしょう。リリースは、アプリケーションをグループ化する方法と考えてください。

http://www.erlang.org/doc/design_principles/release_handling.html

http://learnyousomeerlang.com/release-is-the-word

https://github.com/basho/rebar/wiki/Release-handling

于 2012-05-18T06:58:22.570 に答える