Usare Ruby Enterprise Edition come ruby di sistema in Ubuntu

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.

  1. Scaricare e installare REE
  2. Seguire anche le istruzioni per l’installazione di Passenger
  3. 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
  4. 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 rubygemsnon rimuove l’installazione ruby di sistema (vedi i pacchetti ruby1.8 e ruby1.9), ma solo i link ai comandi gem, ruby, erb e testrb. Con i comandi update-alternatives si ricreano questi link in modo che puntino all’installazione di REE.
  • sudo ignora il PATH dell’utente, quindi per lanciare con sudo un comando installato con rubygems (per esempio rake) bisogna specificare il path assoluto del comando. In alternativa si può impostare il PATH di sistema… ma questo è lasciato come esercizio :-) .

Lascia un Commento

Fill in your details below or click an icon to log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Log Out / Modifica )

Foto Twitter

You are commenting using your Twitter account. Log Out / Modifica )

Foto di Facebook

You are commenting using your Facebook account. Log Out / Modifica )

Connecting to %s