Qualche giorno fa ho scritto un post per spiegare, in più o meno poche righe, cosa diamine è l’actor model. Come già scritto proprio in quelle righe, negli ultimi tempi mi sto (ri)avvicinando ad Elixir. Stavolta, però, ho deciso di trovare quello che poteva essere un buon modo di imparare ad usarlo (senza dover partire dalle basi più banali) e nel contempo tenere un “diario” dell’avventura.
Ho una mia teoria sui “diari” nello sviluppo. Se ben tenuti, è molto più semplice scrivere materiale che sarà, a sua volta, molto più semplice da consultare per il lettore. Del perché, tuttavia, parleremo un’altra volta, oggi non siamo qui per questo.
Va bene, quindi cosa succede oggi?
Ecco cosa faremo:
- innanzitutto, installeremo Elixir e tutto quello che serve per iniziare a lavorarci;
- una volta installato tutto scopriremo Mix, uno dei tool più importanti di Elixir;
- scopriremo un po’ di comandi aggiuntivi interessanti;
- vedremo come mettere su un ambiente di lavoro decente in cui scrivere il nostro codice;
Installazione di Elixir
Partiamo dalla cosa più semplice: installare Elixir è una fesseria. Tutte le istruzioni necessarie possono essere trovate sulla pagina dedicata nella documentazione. Al momento sto usando Ubuntu sul mio PC personale e tutto quello che ho dovuto eseguire, da linea di comando, è stato questo set di comandi.
[code lang=”bash”]
# aggiunta del repository
$ wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb && sudo dpkg -i erlang-solutions_1.0_all.deb
# update di apt-get
$ sudo apt-get update
# installazione di Erlang (e relativa VM)
$ sudo apt-get install esl-erlang
# installazione di Elixir
$ sudo apt-get install elixir
[/code]
Nient’altro: finito qui. La cosa più divertente è che per Ubuntu, forse, la procedura è una delle più complicate. Per essere sicuri che sia andato tutto a buon fine, eseguiamo al volo
[code lang=”bash”]elixir -v[/code]
… che dovrebbe stampare un output simile a questo:
[code lang=”bash”]
Erlang/OTP 20 [erts-9.3] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:10] [hipe] [kernel-poll:false]
Elixir 1.6.3 (compiled with OTP 19)
[/code]
Ci siamo. L’installazione è finita.
Mix e i suoi Comandi
L’installazione di Elixir ci da l’accesso ad una serie di tool da linea di comando. Il più famoso di questi si chiama Mix, ed è il “build tool” (oltre che task runner) di Elixir. In poche parole, ci faremo praticamente tutto quello che è possibile fare da linea di comando quando si parla di Elixir. Sarà sempre da qui, inoltre, che passeremo quando si tratterà di gestire le dipendenze dei nostri progetti.
Vediamo qualche comando tra quelli più importanti.
- mix new
Il comando new permette di creare tutti i file necessari all’avvio di un nuovo progetto. In poche parole, fa quello che in gergo tecnico viene chiamato scaffolding. Proviamolo subito ed eseguiamo
[code lang=”bash”]$ mix new project[/code]
che, prontamente, preparerà in una cartella project lo skelton completo di un progetto.
- mix format
Ok, questo non sarà un comando “vitale” ma rende perfettamente l’idea di quanto sia potente mix e quanta roba abbia dentro. Questo comando praticamente non fa altro che “formattare” il codice per renderlo più leggibile. Se si scrive codice open source è una figata.
- mix test
Non poteva mancare un comando per eseguire i test, vero? Bene, entriamo nella cartella project appena creata con il comando mix new ed eseguiamo il comando mix test. Come facilmente immaginabile, i test vengono eseguiti. Sempre da mix. Tanto per cambiare.
Importante: chiaramente Mix non è un tool “chiuso”. Probabilmente, più in là vedremo insieme come scrivere quello che viene chiamato “mix task”, cioè un comando da CLI in Elixir.
Rimane soltanto una domanda a cui rispondere, adesso, ed è…
“Cosa uso per scrivere Elixir?”
Dunque, la sezione Editor della lista awesome-elixir su GitHub ci suggerisce che le integrazioni dedicate ad Elixir per i vari IDE / editor non mancano. Al momento, per fare le mie prime prove, sto usando Atom e mi sto trovando molto bene. Ecco i package che ho installato:
- language-elixir (https://atom.io/packages/language-elixir): la base. Installa il supporto al linguaggio, altrimenti non presente in Atom di default;
- atom-elixir (https://atom.io/packages/atom-elixir): offre tutta una serie di piccole (ma utilissime) chicche come l’autocomplete, link alla documentazione, smart snippet e compagnia bella;
Questi due sono sicuramente i must-have. Poi ce ne sono anche altri, non strettamente necessari, certo, ma male non fanno:
- iex: permette di avviare una sessione iex (la shell interattiva di Elixir) direttamente in Atom (OCCHIO: è stato testato solo su OSX);
- linter-elixirc: un plugin per Linter dedicato ad Elixir che permette di tenere sotto controllo la qualità del proprio codice, trovando piccoli bug, errori nella scrittura/stile del codice e così via;
Come base è più che sufficiente. Se dovessi trovare un buon IDE, in futuro, ne scriverò sicuramente un articolo.
Stop!
Per ora direi che è tutto, la prima pagina di diario l’ho scritta. Le basi ci sono: abbiamo installato Elixir e tutto il necessario per iniziare a giocarci. Abbiamo tirato su un primo progetto con uno skelton di default completo di tutto quello di cui abbiamo bisogno. Abbiamo scoperto Mix e abbiamo visto come configurare Atom come editor per il nostro lavoro.
La prossima volta entreremo un po’ più nel vivo della questione e parleremo, finalmente, di questi benedetti processi.