Domanda

Qual è il modo più veloce per modificare un'applicazione Erlang, compilare il codice e vedere il risultato in esecuzione? Preferibilmente salto nel guscio Erlang sull'ultimo gradino.

La mia configurazione newbie corrente:

  • Uno script che compila l'applicazione e si avvia la shell Erl.
  • Poi ho digitare applicazione:. Avvio (foo)
  • Quando posso correggere un errore di battitura ho ricompilare il modulo con c ( 'modulo') e riavviare l'applicazione.

C'è un modo più veloce? BTW. il mio editore di scelta è Emacs.

È stato utile?

Soluzione

Qui è la mia messa a punto:

  • Durante lo sviluppo, continuo l'Erlang conchiglia aperta in una finestra terminale separato.
  • Comincio compilazione dall'editor (utilizzando una combinazione di tasti), o semplicemente digitando make nella directory di origine.
  • Dopo la compilazione, passo per caricare tutti i moduli modificati contemporaneamente digitando l() in Erlang shell. È possibile trovare questo e alcune altre macro utili qui: http://www.snookles.com/erlang/ user_default.erl

C'è raramente una necessità di riavviare l'intera applicazione Erlang. Ricaricare i pacchetti modificati è un caso d'uso più comune e di solito è sufficiente per applicare le modifiche.

Per quanto riguarda avvio dell'applicazione: se l'applicazione dipende da altre applicazioni, applicazione: start () avrà esito negativo, fino a quando si inizia a tutte le dipendenze. A causa di ciò, è comune a dare una funzione di supporto <your-app-name>:start(). Ecco un esempio . Un'altra funzione utile è <your-app-name>:stop().

Con tutte queste tecniche applicate, un flusso di lavoro sarebbe simile a questa:

  • avviare la shell Erlang e tenerlo aperto; type<your-app-name>:start().
  • cambiamenti rendono; eseguire la compilazione; digitare l() nel vostro Erlang shell.
  • Quando le modifiche richiedono il riavvio dell'applicazione, tipo <your-app-name>:stop(), <your-app-name>:start().

Altri suggerimenti

Si potrebbe guardare tondo per cemento armato come uno strumento di costruzione. make:all/0 e tutta la fanno modulo potrebbe aiutare pure. Per ricaricare in modo esplicito un modulo dalla shell è possibile utilizzare l(Module). Infine, si potrebbe anche essere interessato a creare un Erlang rilasciare per "avvolgere" tutto le applicazioni Erlang.

Modifica e compilazione è fatto dal IDE (Eclispe con erlide), che io uso.

Ho anche creato uno script che avvia il vm mia applicazione e strumenti utili. Lo script viene utilizzato solo per il tempo dev.

Per ricaricare le sorgenti modificate e bidoni poi compilati, io uso ricaricatore da mochiweb. Il reloader osserva il dir bin e se ci sono cambiamenti, si carica i Moduli ed esegue i test eunit, se avete un po 'dentro.

Esempio:

Erl + A 5 + K vero -name @ 127.0.0.1 -pa $ PWD / Ebin $ PWD / test $ PWD / dipendenze / * / Ebin -boot start_sasl -s ricaricatore -s barra degli strumenti -s

quello che si può anche provare è erlbuild. Erlbuild è una semplice applicazione che guarda in directory src per i file sorgente modificati e se trova alcuni file, che si compila e caricare nuovamente i moduli. Dopo aver caricato i moduli, erlbuild esegue i test dei moduli.

È possibile trovare il progetto sotto: https://github.com/ulfa/erlbuild

~ Ulf

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top