我的应用使用了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
。
答案 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
答案 1 :(得分:0)
将以下代码添加到myapp_web.erl解决了我的问题:
ibrowse:start()
默认情况下,Mochiweb以相同的功能启动:
mochiweb_http:start()...
我不确定这是否是正确的方法,但它确实有效。