Negli ultimi anni Ruby on Rails ha profondamente influenzato il modo di sviluppare applicazioni Web. Sono Simone Carletti e vorrei offrirvi una breve panoramica su questo framework.
Ruby on Rails, o più semplicemente Rails, è un framework open source, inizialmente sviluppato da 37signals e poi rilasciato con licenza MIT. È scritto in Ruby, linguaggio dal quale eredita anche la caratteristica eleganza nell'organizzazione del codice.
Sebbene Ruby sia disponibile per un largo numero di piattaforme, Rails è fortemente orientato a sistemi operativi Unix based. Questo significa che predilige server Linux, Solaris o Mac OS X. Windows può essere usato nella fase di sviluppo, ma è sconsigliato per ambienti di produttività. La disponibilità di tutorial e strumenti Rails per questo sistema operativo è molto più limitata.
Rails supporta diversi web server, tra i quali Apache e Lighttpd. La soluzione più diffusa è comunque composta da una configurazione mista di Apache e Mongrel, un web server scritto in Ruby particolarmente efficace nell'interpretazione di Rails. Altrettanto famoso, ma meno performante, è WEBrick, un webserver integrato nel framework, utilissimo per la fase di sviluppo e debug.
Due sono i principi guida di Rails: Don't Repeat Yourself e Convention over Configuration. Nel primo caso l'obiettivo è ridurre al minimo la ridondanza di codice a favore della condivisione di elementi già scritti. Nel secondo caso, l'obiettivo è ridurre il numero di configurazioni, rispettando le convenzioni proprie del framework.
L'intera organizzazione di Rails è orientata al design pattern MVC: Model, View e Controller. Questo paradigma suddivide un'applicazione in 3 livelli, ciascuno responsabile di una parte ben specifica dell'interazione tra utente e software.
Il Model, o modello, costituisce la rappresentazione logica delle informazioni ed i metodi per accedervi. Comunemente corrisponde ad un database ed alle librerie adottate per eseguire le operazioni di inserimento, modifica, cancellazione e ricerca.
La View, o vista, è la rappresentazione dei dati del modello, quella parte di un software comunemente chiamata interfaccia o front-end.
Il Controller è responsabile dell'interazione tra l'utente ed il software. Riceve le richieste, processa le elaborazioni e, normalmente, esegue delle modifiche al modello.
La netta separazione tra questi 3 elementi è una delle caratteristiche fondamentali del design MVC. Anche grazie a questa struttura, un'applicazione Rails è estremamente flessibile, agevole da mantenere e, soprattutto, estendibile con plugin aggiuntivi.
Sviluppare un'applicazione con Rails offre l'incredibile vantaggio di una produttività quasi immediata. Il programmatore può concentrarsi sulla logica dell'applicazione senza perdere tempo con le problematiche più di basso livello dell'interazione client-server. Allo stesso tempo, però, l'adozione di innumerevoli convenzioni comporta non poche difficoltà nel migrare un'applicazione esistente a Rails.
Rails è stato il precursore di quasi tutti i framework web MVC esistenti. Oggi esistono valide alternative in altri linguaggi, come Django per Python, Spring per Java oppure Symfony e Zend Framework per PHP. Tra i progetti Rails più famosi figurano Twitter, Basecamp e A List Apart.