Dopo quanto visto nel capitolo precedente si direbbe che c'è bisogno di tutto tranne che di un altro gestore dei pacchetti. RubyGems fa tutto quello che ci si può aspettare da uno strumento del genere però, per diversi motivi, ha ancora senso la sopravvivenza del vecchio setup.rb.
Spesso le applicazione/librerie vengono distribuite sia nella forma gem sia come normale tarball comprensivo di file setup.rb
, o analogo file, in modo da permetterne sia l'installazione senza RubyGems sia, ad esempio, la pacchettizzazione come rpm, deb e così via.
Quasi sempre nei tarball contenenti dei sorgenti Ruby troviamo un file di nome setup.rb
, o anche install.rb
o qualcos'altro di inequivocabile, che va utilizzato alla maniera del classico UNIX:
configure make make install
L'installazione avviene in genere anche qui in tre fasi:
ruby setup.rb config ruby setup.rb setup ruby setup.rb install
l'ultimo passo, che installa i file sul disco, va fatto con i giusti permessi.
Ogni aspetto del processo di installazione può essere gestito attraverso gli hook che altro non sono che dei file con un determinato nome posizionati nel giusto posto. Per permettere a setub.rb
di operare nel migliore modo possibile occorre dunque sistemare i sorgenti seguendo uno schema di directory preciso. Una possibile soluzione, simile a quella già vista nel capitolo precedente, è riportata di seguito. Nella directory radice del progetto si creano le seguenti directory:
lib/
contiene le applicazioni, e le librerie, Ruby vere e proprie
ext/
contiene eventuali estensioni Ruby scritte in C
bin/
contiene le utility necessarie in fase di installazione
contiene i file dati che accompagnano l'applicazione
data/
conf/
contiene tutti i file di configurazione
man/
contiene le pagine del manuale
test/
contiene i test
e nella directory radice, oltre ai soliti file di istruzioni, di licenza e changelog, avremo anche setup.rb da utilizzare per l'installazione. Utilizzare setup.rb come installer è molto semplice, basta solo copiare il file setup.rb, reperibile sul sito http://i.loveruby.net/en/projects/setup/, nella directory radice e la disposizione dei file nelle giuste directory farà il resto.