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

Aggiornamento a Rails 2.2

Aggiornare il framework alla versione 2.2
Aggiornare il framework alla versione 2.2
Link copiato negli appunti

Il rilascio di Rails 2.2 il 21 Novembre 2008 è stato accolto con estremo entusiasmo dagli utenti di questo popolare framework Ruby. Rails 2.2 segna infatti una svolta epocale introducendo il supporto nativo all'internazionalizzazione ed alla localizzazione, una tra le funzionalità più richieste in assoluto.

In realtà questa non è l'unica novità introdotta da questa nuova mini (?) release. Tra le novità più consistenti c'è da ricordare le modifiche per rendere Rails Thread Safe, il miglioramento del supporto agli header HTTP etag e last-modified. Possiamo inoltre parlare di piena compatibilità con Rails 1.9, Connection Pools, memoization e molto altro ancora.

Chi non non vede l'ora di aggiornare la propria applicazione a Rails 2.2, troverà in questo articolo pane per i suoi denti!

Prima di Cominciare

Questo articolo descrive la procedura di aggiornamento specifico alla versione Rails 2.2 ed eventuali bugfix release 2.2.x. Prima di procedere con l'aggiornamento specifico è necessario aver completato correttamente la procedura generica di aggiornamento a Rails 2, descritta in questo articolo.

In particolare, è essenziale che Rails 2.2 sia stato installato correttamente e che tutti i riferimenti al framework nei file del vostro progetto corrispondano a quelli della nuova release.

La presenza di eventuali plugin per l'internazionalizzazione, come ad esempio Ruby-GetText per Rails potrebbe causare alcuni problemi in fase di aggiornamento. In tal caso, occorre disattivare temporaneamente il plugin ed assicurarsi di correggere eventuali incompatibilità.

Internazionalizzazione e Localizzazione

Come anticipato, Rails 2.2 introduce il supporto all'internazionalizzazione (i18n) e alla localizzazione (L10n). Anche se l'aggiornamento alla nuova versione abilita automaticamente le funzionalità, è consigliabile aggiornare la struttura della vostra applicazione Rails per riflettere i cambiamenti.

Per impostazione predefinita, le localizzazioni sono salvate nella nuova cartella config/locales in file Ruby e/o YAML, identificati rispettivamente dalle estensioni .rb e .yml. Creiamo dunque la cartella config/locales nel nostro progetto ed inseriamo all'interno il file di esempio di Rails chiamato en.yml con il seguente contenuto:

# Sample localization file for English. Add more files in this directory for other locales.
# See http://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
en:
hello: "Hello world"

Questo file è in realtà solamente un esempio. Se necessario, possiamo inserire direttamente i file contenenti le localizzazioni e/o adattare il contenuto in base alle nostre esigenze. Per semplicità, possiamo creare un nuovo progetto Rails con il comando:

rails <nomeprogetto>

e copiare le cartelle ed i file corrispondenti dal nuovo progetto a quello esistente.

Per comodità e promemoria, non dimentichiamoci di modificare il file config/environment.rb integrando le nuove istruzioni dedicate all'internazionalizzazione all'interno del blocco Rails::Initializer.run.

# The internationalization framework can be changed to have another default locale (standard is :en) or more load paths.
# All files from config/locales/*.rb,yml are added automatically.
# config.i18n.load_path << Dir[File.join(RAILS_ROOT, 'my', 'locales', '*.{rb,yml}')]
# config.i18n.default_locale = :de

Anche se la loro posizione è indifferente, è consigliabile inserirle immediatamente dopo l'indicazione del fuso orario con config.time_zone. In questo modo il nostro file rispecchierà esattamente quello creato per ogni nuovo progetto a partire da Rails 2.2.

È importante notare che, di default, le istruzioni appaiono commentate. Rails infatti carica autonomamente i file di localizzazione ammesso che si trovino nella cartella config/locales e che abbiano estensione .rb o .yml. Inoltre, :en è l'impostazione predefinita per il valore di locale che, difficile a dirlo, corrisponde per convenzione all'inglese.

Nel caso il nostro progetto non aderisca agli standard è possibile decommentare e modificare le righe a seconda delle nostre esigenze.

Per maggiori informazioni su Rails ed il supporto i18n consiglio la lettura di un po' di storia e delle specifiche tecniche.

Test::Performance

Una novità di Rails 2.2 passata quasi del tutto inosservata è l'introduzione dei PerformanceTest. Si tratta di una quarta generazione di test dopo a Unit Test, Functional Test e Integrational Test. I Performance Test sono salvati nella cartella test/performance, estendono la classe ActionController::PerformanceTest e sono utili per eseguire benchmark e misurare le performance di un'azione in un controller Rails.

Anche in questo caso, la procedura più semplice consiste nel creare un nuovo progetto Rails e copiare il contenuto della cartella test/performance all'interno della cartella test del vostro progetto esistente. Salvo novità dell'ultima ora, dovrebbe trattarsi di un solo file di esempio chiamato browsing_help.rb.

Rimozione di cache_template_loading

A partire da Rails 2.1 la proprietà cache_template_loading di ActionView è stata deprecata. A partire da Rails 2.2 l'utilizzo di questa configurazione genera un errore in fase di avvio del webserver. Per questo motivo è necessario rimuovere questa variabile dal nostro progetto, se presente.

In genere la configurazione è contenuta nei file di environment, nello specifico nel file production.rb. Apriamo il file, individuiamo la riga seguente e rimuoviamola.

config.action_view.cache_template_loading = true

Eventualmente assicuriamoci di non aver copiato la variabile all'interno di altri file nel progetto.

Deprecation Warning

Rails 2.2 introduce alcuni deprecation warning. Sebbene si tratti solo di avvisi al momento, è probabile che le funzionalità segnalate vengano rimosse in una release successiva ed è quindi consigliabile attivarsi per risolvere tempestivamente eventuali problemi.

Nello specifico, Rails 2.2 identifica come deprecati l'uso di render_component che a partire da Rails 2.3 saranno disponibili esclusivamente come plugin. L'helper country_select è stato rimosso,ActiveRecord::Base.allow_concurrency non ha più effetto mentre ActiveRecord::Errors.default_error_messages è stato rimpiazzato da I18n.translate(activerecord.errors.messages).

Per la lista completa si può consultare l'apposita sezione nel riepilogo dei cambiamenti di Rails 2.2.

Altre novità

La lista completa dei cambiamenti di Rails 2.2 è molto lunga e va oltre lo scopo di questo articolo. Per approfondimenti ecco alcune risorse utili:

A partire da questi link è facilmente possibile scoprire decine di collegamenti ad approfondimenti, risorse e tutorial.

Conclusioni

Rails 2.2 è una versione molto ricca di novità. L'introduzione del supporto all'internazionalizzazione è senza dubbio il cambiamento più atteso ma non deve lasciar passare in secondo piano le decine di miglioramenti disponibili. L'aggiornamento a Rails 2.2 è tutto sommato semplice ed immediato ma è opportuno investire tempo e risorse per eseguire il refactoring delle librerie preesistenti per sfruttare al meglio le novità.

Ti consigliamo anche