2011-04-27 36 views
8

¿Cuál es la forma más rápida de editar una aplicación de Erlang, compilar el código y ver el resultado de la ejecución? Preferiblemente saltando en el caparazón de Erlang en el último paso.Acelerando el ciclo de edición, compilación, ejecución/depuración de Erlang

Mi configuración actual novato:

  • Un guión que compila la aplicación y se pone en marcha la cáscara ERL.
  • Luego escribo la aplicación: start (foo).
  • Cuando corrijo un error tipográfico recompilo el módulo con c ('módulo') y reinicio la aplicación.

¿Hay una manera más rápida? Por cierto. mi editor de elección es Emacs.

Respuesta

12

Aquí está mi configuración:

  • Durante el desarrollo, me quedo con el shell de Erlang se abre en una ventana de terminal separada.
  • Empiezo la compilación desde el editor (usando una combinación de teclas), o simplemente escribiendo make en el directorio fuente.
  • Después de la compilación, cargo todos los módulos modificados a la vez escribiendo l() en el shell de Erlang. Puede encontrar esto y algunas otras macros útiles aquí: http://www.snookles.com/erlang/user_default.erl

Rara vez es necesario reiniciar toda la aplicación Erlang. La recarga de módulos modificados es un caso de uso más común y, por lo general, es suficiente para aplicar los cambios.

En cuanto al inicio de la aplicación: si su aplicación depende de otras aplicaciones, la aplicación: start() fallará, hasta que inicie todas las dependencias. Por eso, es común escribir una función auxiliar <your-app-name>:start(). Aquí hay un example. Otra función útil es <your-app-name>:stop().

Con todas estas técnicas aplicadas, un flujo de trabajo se vería así:

  • de inicio del shell de Erlang y mantenerla abierta; tipo <your-app-name>:start().
  • Realizar cambios; ejecutar la compilación; escriba l() en su shell de Erlang.
  • Cuando los cambios requieren el reinicio de aplicaciones, escriba <your-app-name>:stop(), <your-app-name>:start().
2

Puede consultar rebar como una herramienta de construcción. make:all/0 y todo el módulo make podría ayudar también. Para volver a cargar explícitamente un módulo desde el shell, puede usar l(Module). Finalmente, también podría estar interesado en crear un Erlang release para "ajustar" todas sus aplicaciones Erlang.

2

edición y compilación se realiza mediante el IDE (Eclispe con erlide), que yo uso.

También creé un script que inicia mi aplicación vm y herramientas útiles. La secuencia de comandos solo se usa para el tiempo de desarrollo.

Para volver a cargar las fuentes modificadas y luego compilar contenedores, utilizo el recargador de mochiweb.El reloader observa el bin dir y si hay cambios, carga los módulos y ejecuta las pruebas de eunit, si tiene alguno dentro.

Ejemplo:

ERL + A + 5 K @ -nombre verdadero 127.0.0.1 -PA $ PWD/ebin $ PWD/prueba $ PWD/deps/*/ebin -boot start_sasl -s recargador -s barra de herramientas -s

1

lo que también puedes probar es erlbuild. Erlbuild es una aplicación simple que busca en el directorio src los archivos fuente modificados y si encuentra algunos archivos, luego compila y carga los módulos nuevamente. Después de cargar los módulos, erlbuild ejecuta las pruebas de los módulos.

puede encontrar el proyecto en: https://github.com/ulfa/erlbuild

~ Ulf

Cuestiones relacionadas