Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Procedura generica di aggiornamento a Rails 2

La procedura generale per aggiornare Ruby On Rails 2
La procedura generale per aggiornare Ruby On Rails 2
Link copiato negli appunti

L'aggiornamento di un'applicazione basata su una versione di Rails 2 si compone di due parti: l'aggiornamento generico per Rails e l'aggiornamento specifico per la versione di Rails 2 che si desidera utilizzare.

La prima fase è normalmente standard e consiste nell'installazione delle librerie necessarie, l'aggiornamento dei riferimenti al framework e l'importazione delle versioni aggiornate delle librerie incluse come i file di prototype o il bootstrap di Rails. La seconda fase è specifica rispetto alla versione di Rails che si desidera adottare e,
normalmente, richiede un intervento più invadente sul codice dell'applicazione da aggiornare.

In questo articolo vedremo come eseguire la prima parte di un aggiornamento a Rails 2. In linea di massima, le operazioni descritte solo valide per una qualsiasi versione 2 di Rails. Per gli aggiornamenti specifici potete fare riferimento ai singoli articoli pubblicati su HTML.it, in genere disponibili a breve distanza dopo al rilascio di una nuova versione del framework.

Prima di Cominciare

Prima di procedere con un aggiornamento di Rails, controlliamo il nostro progetto ed assicuriamoci che non ci siano modifiche in sospeso da inviare al repository. In caso affermativo, eseguiamo il commit dei cambiamenti prima di procedere.

Nel caso in cui il nostro progetto non si appoggi ad un sistema di versioning, come ad esempio Subversion, Git o Mercurial, è preferibile correre ai ripari. Per approfondimenti può essere utile la lettura dell'articolo Rails e Subversion e della Guida Subversion, pubblicati su HTML.it.

Questo articolo si basa sulle seguenti assunzioni:

  • il progetto è gestito da un sistema di versioning
  • si desidera aggiornare da una versione di Rails 2 ad un'altra versione di Rails 2 successiva
  • il computer dispone di un'installazione funzionante di Ruby, RubyGems e Rails 2
  • il computer dispone di un sitema operativo Unix based o munito di un accesso da Command-Line (Shell, DOS o equivalente)

A seconda che una o più condizioni non siano verificate, l'aggiornamento potrebbe richiedere adattamenti o personalizzazioni.

Installazione della nuova versione

Come facilmente intuibile, il primo passo fondamentale consiste nell'installare sul nostro computer la versione di Rails 2 alla quale si desidera aggiornare. Grazie a RubyGems, la procedura si completa in un attimo:

gem install rails

RubyGems provvederà ad installare (o aggiornare) Rails e tutte le librerie dipendenti:

  • activesupport
  • activerecord
  • actionpack
  • actionmailer
  • activeresource

A seconda del tipo di account e di sistema operativo in uso, potrebbero essere necessari i privilegi di amministratore per eseguire l'installazione. L'esempio seguente mostra l'output prodotto per un aggiornamento a Rails 2.1.0.

$ sudo gem install rails
Successfully installed activesupport-2.1.0
Successfully installed activerecord-2.1.0
Successfully installed actionpack-2.1.0
Successfully installed actionmailer-2.1.0
Successfully installed activeresource-2.1.0
Successfully installed rails-2.1.0
6 gems installed
Installing ri documentation for activesupport-2.1.0...
Installing ri documentation for activerecord-2.1.0...
Installing ri documentation for actionpack-2.1.0...
Installing ri documentation for actionmailer-2.1.0...
Installing ri documentation for activeresource-2.1.0...
Installing RDoc documentation for activesupport-2.1.0...
Installing RDoc documentation for activerecord-2.1.0...
Installing RDoc documentation for actionpack-2.1.0...
Installing RDoc documentation for actionmailer-2.1.0...
Installing RDoc documentation for activeresource-2.1.0...      

Grazie alle caratteristiche di RubyGems è possibile mantenere installate più versioni di una specifica GEM. Nel nostro caso, non è quindi necessario disinstallare dal sistema la versione di Rails precedente.

L'installazione renderà disponibile la nuova GEM solo ed esclusivamente a quelle applicazioni che lo richiederanno in modo esplicito, tutte le altre continueranno a funzionare sulle precedenti versioni di Rails senza conflitti fino a quando non decideremo di aggiornarle con la procedura descritta in questo articolo.

Aggiornamento RAILS_GEM_VERSION

Ciascuna applicazione Rails contiene, nel file /config/environment.rb, una costante chiamata
RAILS_GEM_VERSION che indica l'esatta versione Rails da eseguire per il progetto. Se ad esempio stiamo usando Rails 2.0.2, la nostra stringa dovrebbe corrispondere alla seguente:

# Specifies gem version of Rails to use when vendor/rails is not present
RAILS_GEM_VERSION = '2.0.2' unless defined? RAILS_GEM_VERSION

Ad ogni modo, qualunque sia la versione di Rails 2.x in uso, modifichiamo il valore della costante alla versione di Rails appena installata e salviamo il file.

Nota: Se utilizziamo una versione precedente a Rails 2.0.x è meglio consultate attentamente la documentazione contenente le informazioni per eseguire l'aggiornamento da Rails 1 a Rails 2. Quest'ultimo infatti contiene delle caratteristiche non retro compatibili.

Per verificare che la nuova impostazione sia configurata correttamente, spostiamoci nella cartella principale del nostro progetto ed eseguiamo il seguente comando da console:

ruby script/about

Assicuriamoci che il valore di Rails version e delle dipendenze prima indicate corrisponda alla versione indicata, come nell'esempio seguente.

About your application's environment
Ruby version      1.8.6 (universal-darwin9.0)
RubyGems version  1.2.0
Rails version     2.1.0
Active Record version     2.1.0
Action Pack version       2.1.0
Active Resource version   2.1.0
Action Mailer version     2.1.0
Active Support version    2.1.0
Application root  /Users/weppos/Sites/fooapp/trunk
Environment       development
Database adapter  sqlite3
Database schema version   20080608181654

In caso contrario, è opportuno verificare di aver installato correttamente tutte le GEM e modificato il file indicato.

Upgrade file e script

Buona parte del cuore del framework è contenuto nella GEM Rails e nelle varie dipendenze. Esistono tuttavia alcuni file di configurazione e script che vengono copiati in ogni nuova applicazione e differiscono da versione a versione. Questi file vanno aggiornati con le rispettive controparti contenute nella nuova versione di Rails.

Fortunatamente non è necessario andare a modificare, copiare o incolare uno ad uno i file. Inoltre, lasciamo da parte l'idea di creare una nuova applicazione Rails vuota e confrontare uno ad uno le differenze. Rails mette a disposizione diversi task Rake per aggiornare tutto il necessario.

Portiamoci nella cartella principale del progetto e digitiamo il seguente comando per scoprire di quali si tratta.

rake -T rails:update

Ecco l'elenco completo per Rails 2.1:

rake rails:update      # Update both configs, scripts and public/ja...
rake rails:update:configs      # Update config/boot.rb from your current ra...
rake rails:update:JavaScripts  # Update your JavaScripts from your current ...
rake rails:update:scripts      # Add new scripts to the application script/...      

Il loro significato è molto intuitivo:

  • update:config esegue l'aggiornamento di tutti i file di configurazione nella cartella config, inclusi boot.rb ed environment.rb
  • update:JavaScript esegue l'aggiornamento di tutti i file JavaScript creati da Rails nella cartella public/JavaScript, come ad esempio la libreria Prototype
  • update:script esegue l'aggiornamento di tutti gli script create da Rails nella cartella scripts
  • update esegue tutti gli altri comandi in un colpo solo

A seconda della propria familiarità con questi comandi, eseguiamo uno alla volta i task indicati o tutti insieme. Al termine, verifichiamo le modifiche sfruttando le funzioni messe a disposizione dal nostro sistema di gestione del codice: se necessario, annulliamo delle modifiche o applichiamo a mano le correzioni necessarie al funzionamento della nostra applicazione.

L'esempio seguente mostra l'elenco dei cambiamenti sfruttando il comando svn status di Subversion.

svn status
?      script/dbconsole
M      config/boot.rb
M      config/environment.rb
M      public/JavaScripts/effects.js
M      public/JavaScripts/dragdrop.js
M      public/JavaScripts/controls.js

Aggiornamento completato!

L'aggiornamento generico alla nuova versione di Rails 2 è stato completato. Assicuriamoci del corretto funzionamento della nostra applicazione eseguendo le test suite che (spero per voi) sono state preparate nel corso dello sviluppo del progetto.

Proviamo ad avviare il webserver ed eseguire in locale l'applicazione per testare manualmente le operazioni più delicate.

Infine, se non ci sono sintomi di pericolo, procediamo con il commit delle modifiche al nostro repository.

Conclusioni

Al termine delle istruzioni di questo articolo, la nostra applicazione è a tutti gli effetti aggiornata alla nuova versione di Rails.

Tuttavia, come anticipato in apertura, nuove versioni spesso introducono miglioramenti che è possibile sfruttare intervenendo con modifiche mirate al codice della nostra applicazione. Queste modifiche sono strettamente correlate alla versione di Rails 2 che intendiamo installare abbiamo quindi deciso di dedicare un articolo per ogni versione del framework che verrà rilasciata. Per gli aggiornamenti specifici è quindi possibile consultare gli appositi articoli pubblicati su HTML.it tenendo in considerazione che normalmente un articolo per una versione Rails 2.x comprende anche eventuali aggiornamenti a bugfix release 2.x.x.

Nella maggior parte dei casi gli aggiornamenti specifici sono facoltativi, soprattutto se si tratta di nuove funzionalità. In caso di aggiornamenti dovuti a deprecation warning, le modifiche diventano obbligatorie o l'applicazione potrebbe non funzionare correttamente in seguito al passaggio alla nuova versione. È importante tenere sempre sotto controllo i log di esecuzione dei progetti Rails per individuare eventuali errori o anomalie.


Ti consigliamo anche