Pregunta

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

Mi configuración actual del novato:

  • Un script que compila la aplicación e inicia el shell ERL.
  • Luego escribo en la aplicación: Inicio (FOO).
  • Cuando soluciono un error tipográfico, recompino el módulo con C ('módulo') y reinicio la aplicación.

¿Hay una manera mas rápida? POR CIERTO. Mi editor de elección es Emacs.

¿Fue útil?

Solución

Aquí está mi configuración:

  • Mientras me desarrolla, mantengo la carcasa Erlang abierta en una ventana de terminal separada.
  • Comienzo la compilación del editor (usando una combinación clave), o simplemente escribiendo make En el directorio de origen.
  • Después de la compilación, carga todos los módulos cambiados a la vez escribiendo l() En la cáscara de Erlang. Puede encontrar esto y algunas otras macros útiles aquí: http://www.snookles.com/erlang/user_default.erl

Raramente hay necesidad de reiniciar toda la aplicación Erlang. La recarga de módulos cambiados es un caso de uso más común y generalmente es suficiente para aplicar sus cambios.

Con respecto 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. Debido a eso, es común escribir una función de ayudante <your-app-name>:start(). Aquí hay un ejemplo. Otra función útil es <your-app-name>:stop().

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

  • Comience la carcasa de Erlang y manténgala abierta; escribe<your-app-name>:start().
  • Hacer cambios; Ejecutar compilación; escribe l() en tu caparazón de Erlang.
  • Cuando los cambios requieren reiniciar la aplicación, escriba <your-app-name>:stop(), <your-app-name>:start().

Otros consejos

Podrías mirar reflexión como herramienta de construcción. make:all/0 y el todo hacer El módulo también podría ayudar. Para recargar explícitamente un módulo del shell que puede usar l(Module). Finalmente, también puede estar interesado en crear un Erlang liberar para "envolver" todas sus aplicaciones de Erlang.

La edición y la compilación se realiza por el IDE (Eclispe con Erlide) que uso.

También creé un script que inicia la VM mi aplicación y las herramientas útiles. El script solo se usa para el tiempo de desarrollo.

Para recargar las fuentes cambiadas y luego los contenedores compilados, uso el recargador de Mochiweb. El recargador observa el directorio de contenedor y si hay cambios, carga los modulados y ejecuta las pruebas de EUNIT, si tiene algunas adentro.

Ejemplo:

ERL +A 5 +K True -name @127.0.0.1 -pa $ pwd/ebin $ pwd/test $ pwd/deps/*/ebin -boot start_sasl -s reloader -s herramientas -s -s -s

Lo que también puedes probar es ErlBuild. ErlBuild es una aplicación simple que se ve en el directorio SRC para los archivos de origen cambiado y si encuentra algunos archivos, entonces compila y cargue 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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top