Mochiweb:包含并编译其他库

时间:2012-05-17 15:48:40

标签: makefile erlang otp mochiweb rebar

我的应用使用了Mochiweb。

我注意到当我在myapp/deps/mochiweb目录中运行make时,Mochiweb文件驻留在rebar目录中并且myapp编译它们。

我想添加ibrowse来编写一些测试,这些测试会向我的应用发出http请求。所以我将ibrowse从github克隆到myapp/deps/ibrowse目录。

但似乎Erlang不知道从哪里获取.beam的{​​{1}}文件,因此我使用ibrowse模块的所有测试都失败了:

ibrowse

如何让基于Mochiweb的应用程序使用其他Erlang / OTP外部库?

我应该编辑rebar.config或Makefile吗?或者我应该编辑一个_app.src文件?

编辑:也许我应该编辑myapp_sup.erl文件中的目录列表? (myapp ebin %%compiled tests reside here, tests which use ibrowse fail (badarg) deps mochiweb ibrowse ebin %%compiled ibrowse module resides here src tests

P.S。我的应用程序如何知道所有mochiweb.beam文件所在的位置? (例如,通用myapp_deps:local_path(["priv", "www"]使用对myapp_web.erl模块的调用,但mochiweb_http目录中没有mochiweb_http.beam

2 个答案:

答案 0 :(得分:0)

通过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

答案 1 :(得分:0)

将以下代码添加到myapp_web.erl解决了我的问题:

ibrowse:start()

默认情况下,Mochiweb以相同的功能启动:

mochiweb_http:start()...

我不确定这是否是正确的方法,但它确实有效。