Vari articoli spiegano come usare Passenger in modalità development. Ma non ho trovato nulla di pratico su come sostistuire il pacchetto ruby di Ubuntu con REE. Così ho deciso di prendere nota della procedura che sta funzionando per me usando Ubuntu 9.04 e REE 2.2.2.
Uso REE e Passenger per il deploy di applicazioni ROR e, per ridure al minimo le sorprese, uso lo stesso ambiente in fase di sviluppo.
Una nota importante: seguendo questa procedura tutti i comandi ruby e rubygems (in particolare ruby, gem e rake) e tutte le librerie ruby (per esempio il driver ODBC) saranno installati nella cartella /opt/ruby-enterprise-VERSIONE-DI-REE. Quindi, quando si aggiorna REE bisognerà reinstallare le gem e le librerie non comprese nella distribuzione. Questo è certamente uno svantaggio, ma in compenso si ha il grande vantaggio di poter fare facilmente il rollback in seguito ad un aggiornamento problematico e di poter tenere facilmente più versioni di ruby e relative librerie sullo stesso sistema.
- Scaricare e installare REE
- Seguire anche le istruzioni per l’installazione di Passenger
- Installare i comandi di sistema:
cd /opt sudo ln -s ruby-enterprise-1.8.6-20090520 ruby-enterprise sudo aptitude --purge remove ruby rubygems sudo update-alternatives \ --install /usr/bin/ruby ruby /opt/ruby-enterprise/bin/ruby 50 \ --slave /usr/bin/gem gem /opt/ruby-enterprise/bin/gem \ --slave /usr/bin/erb erb /opt/ruby-enterprise/bin/erb \ --slave /usr/bin/testrb testrb /opt/ruby-enterprise/bin/testrb - Aggiornare il PATH per “vedere” i comandi installati con rubygem aggiungendo a
~/.bashrc:export PATH='/opt/ruby-enterprise/bin':"$PATH"
Ricordarsi di aggiornare il link /opt/ruby-enterprise ad ogni aggiornamento di REE, altrimenti si continuerà ad usare sempre la stessa versione di REE e relative librerie.
Alcune note:
- “
aptitude --purge remove ruby rubygems” non rimuove l’installazione ruby di sistema (vedi i pacchetti ruby1.8 e ruby1.9), ma solo i link ai comandigem,ruby,erbetestrb. Con i comandiupdate-alternativessi ricreano questi link in modo che puntino all’installazione di REE. sudoignora il PATH dell’utente, quindi per lanciare consudoun comando installato con rubygems (per esempiorake) bisogna specificare il path assoluto del comando. In alternativa si può impostare il PATH di sistema… ma questo è lasciato come esercizio
.