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

L'architettura di Ruby on Rails

Il pattern MVC incarnato dai moduli di Rails
Il pattern MVC incarnato dai moduli di Rails
Link copiato negli appunti

Ruby on Rails è composto da differenti moduli, ogni modulo è indipendente e può essere utilizzato esternamente al framework. I moduli che compongono il framework sono scritti interamente in Ruby, ed ereditano tutte le peculiarità di questo linguaggio, come il paradigma ad oggetti e le classi aperte.

Il pattern MVC

L'architettura di Ruby on Rails implementa il pattern MVC (Model View Controller). Secondo questo pattern il codice che compone un'applicazione deve essere organizzato in tre aree di competenza distinte:

  • i modelli si occupano di rappresentare i dati che l'applicazione vuole trattare, e di interagire con il sistema persistenza utilizzato per salvare i dati dell'applicazione; se ad esempio vogliamo realizzare un'applicazione che gestisce dei bookmark, si implementa un modello che rappresenta i bookmark, e tramite questo modello possiamo salvare i bookmark sul database
  • le viste si occupano di interagire con gli utenti, raccogliendo gli input e mostrando i risultati delle elaborazioni (le pagine HTML, in definitiva)
  • i controller contengono la logica applicativa, ovvero il comportamento che l'applicazione adotta a seconda degli stimoli esterni (view) e dei dati (model)

Il pattern MVC è stato concepito originariamente per la realizzazione di applicazioni desktop, ma ben si adatta alla applicazioni Web. L'applicazione Web viene attivata da un'azione esterna, come un browser che richiede la visualizzazione di una determinata pagina; il controller interpreta la richiesta, dialoga con il modello per recuperare o scrivere i dati e rende disponibili alle viste le informazioni che devono essere visualizzate.

Per ognuna delle aree di competenza del pattern MVC, Rails mette a disposizione un modulo dedicato:

  • ActiveRecord si occupa della gestione dei modelli
  • ActionView della gestione delle viste
  • ActionController della gestione dei controller

In questa configurazione ActionController svolge il ruolo di coordinatore fra i differenti moduli, contenendo tutte le logiche dell'applicazione utilizza a proprio piacimento ActionView, ActiveRecord o gli altri moduli del framework.

Questa organizzazione del codice permette di intervenire su una parte dell'applicazione senza intaccare le altre; si possono ad esempio cambiare le viste dell'applicazione lasciandone inalterata la logica, oppure sostituire il sistema di persistenza dei dati senza toccare il lavoro svolto sulle pagine HTML.

Moduli e plugin

Oltre ai moduli che implementano il modello MVC, Rails comprende altri moduli che facilitano la realizzazione di particolari funzionalità, come la realizzazione di Web Service con ActiveResource o la generazione e la spedizione di email con ActionMailer. Come tutti i moduli del framework, anche questi sono indipendenti, utilizzati dal controller nella logica applicativa.

Quando necessario è possibile estendere le funzionalità di Rails installando plugin sviluppati da terzi o librerie Ruby.

Mentre l'utilizzo di librerie Ruby permette di accedere a funzionalità di basso livello, i plugin implementano funzionalità complete come la gestione degli utenti o il versioning dei dati sul database, e possono estendere un modulo specifico oppure più moduli del framework.

Il framework mette a disposizione un sistema di aggancio dei plugin che permette di sviluppare nuovi plugin in modo molto semplice, come dimostra il numero di plugin sviluppato dalla cominità Rails.

Lo stesso team di sviluppo del core di Rails ha adottato la forma del plugin per estrarre alcune funzionalità considerate non strettamente indispensabili al framework e renderle disponibili solo se richieste; il modulo per l'interazione con web service SOAP era distribuito come modulo del framework nelle sue prime versioni, mentre ora è disponibile come plugin da installare su richiesta.

L'utilizzo di plugin rappresenta non solo un'opportunità per risparmiare codice e concentrarsi sulle particolarità della propria applicazione, ma anche l'occasione per studiare le soluzioni applicate ai problemi più ricorrenti della programmazione Web.

Ti consigliamo anche