Accelerare l'Erlang Edit, compilare, eseguire / ciclo Debug
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.
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