makefile erlang otp mochiweb rebar

makefile - Mochiweb: incluye y compila otras bibliotecas



erlang otp (2)

Mi aplicación usa Mochiweb.

Me di cuenta de que los archivos Mochiweb residen en el directorio myapp/deps/mochiweb y la rebar compila cuando ejecuto make en el directorio myapp .

Quise agregar ibrowse para escribir algunas pruebas que hacen solicitudes http a mi aplicación. Así que ibrowse de github en el directorio myapp/deps/ibrowse .

Pero parece que Erlang no sabe dónde obtener los archivos ibrowse para el ibrowse y, por lo tanto, todas mis pruebas que usan el módulo de ibrowse fallan:

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

¿Cómo puedo hacer que mi aplicación basada en Mochiweb use otras bibliotecas externas de Erlang / OTP?

¿Debo editar rebar.config o Makefile para eso? O tal vez debería editar un archivo _app.src?

Editar: ¿Tal vez debería editar la lista de directorios en el archivo myapp_sup.erl? ( myapp_deps:local_path(["priv", "www"] )

PD: ¿Cómo sabe mi aplicación dónde residen todos los archivos mochiweb.beam? (por ejemplo, el myapp_web.erl genérico utiliza una llamada al módulo mochiweb_http , pero no hay mochiweb_http.beam en el directorio myapp/ebin ).


Agregar el siguiente código a myapp_web.erl resolvió mi problema:

ibrowse:start()

Por defecto, Mochiweb se inicia en la misma función:

mochiweb_http:start()...

No estoy seguro de si es la forma correcta de hacerlo, pero funciona.


Las dependencias en la barra de refuerzo se agregan a través del archivo 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"}}}]}.

Entonces, es probable que desee ver las versiones de Erlang y el manejo de versiones con barras de refuerzo. Piense en un lanzamiento como una forma de agrupar aplicaciones.

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