Nel corso della guida abbiamo incotrato ed utilizzato alcune librerie che non si trovano nel pacchetto "base" di Ruby. Perché queste gemme funzionino correttamente è necessaria qualche attenzione in più in fase di installazione.
Dobbiamo riprendere e mettere in pratica quanto già visto nella guida Ruby, nel capitolo su RubyGems. Anzitutto abbiamo visto che per installare una gem è necessario utilizzare il comando:
Installazione di una gem
sudo gem install <nomegem>
Nota: Effettuiamo sempre le installazioni come "super user" (sudo
) per non avere problemi di permessi.
Qui potrebbe già sorgere qualche difficoltà, in alcuni casi i nomi dei file delle gem non corrispondono a quelli utilizzati per le dichiarazioni delle relative classi. Ad esempio il nome del file della gemma WWW:Mechanize
è semplicemente mechanize
.
Un modo semplice per avere un riscontro immediato consiste nel creare un file di testo con tutte le gemme disponibili ed effettuando una ricerca al suo interno.
Creare un file con la lista delle gemme
gem list -r >> gemlist.txt
Per utilizzare un gem abbiamo bisogno di utilizzare rubygem
, che, fino alla versione 1.9 di ruby è considerata una libreria esterna. In quanto libreria esterna abbiamo bisogno di caricarla utilizzando il comando require
.
require 'rubygems'
Questa istruzione carica il gestore delle gem e va eseguita, a meno che non siamo su rails o altrove dove il caricamento è previsto dal framework.
Ruby, per default, non carica le gem automaticamente e se vogliamo utilizzarla dobbiamo inserirla nel percorso di inclusione delle gem utilizzando la variabile $LOAD_PATH
Il modo più semplice per caricare la libreria, però, è quello di richiamarla con la direttiva gem
. In questo modo possiamo specificare anche quale versione della libreria ci interessa utilizzare.
Esempio di utilizzo della versione 2.7 della gem 'mysql'
gem 'mysql', '=2.7'
Una volta inserita la gemma nel nostro contesto e decisa la versione, possiamo richiamare la classe principale come qualunque altra libreria standard.
Richiamare la libreria 'mysql'
require 'mysql'
In realtà questo comando è facoltativo, infatti con il comando gem
abbiamo già la gemma caricata e predisposta all'utilizzo. Rimane il problema dei nomi. Come dicevamo può capitare che il nome della gemma e il nome dei file non siano uguali, in questo caso, specificando il nome della libreria nel comando require
non corriamo rischi.
Ecco l'esempio completo:
require 'rubygems' gem 'mysql', '=2.7' require 'mysql'