Ruby on Rails 1.0: convention over configuration

Ruby on Rails 1.0 esce nel 2005: Active Record, MVC, scaffolding, migrations e i principi CoC e DRY ridefiniscono la produttività nello sviluppo web.

Open SourceWeb Open SourceRuby on RailsRubyWebMVCBackend

Un framework estratto da un prodotto reale

Ruby on Rails non nasce in un laboratorio di ricerca né come esercizio accademico. David Heinemeier Hansson (DHH) lo estrae dal codice di Basecamp, un’applicazione di project management sviluppata dalla società 37signals. L’idea è semplice: il codice che funziona in produzione, generalizzato e rilasciato come framework open source. La versione 1.0, pubblicata nel dicembre 2005 sotto licenza MIT, consolida un approccio allo sviluppo web che avrà influenza profonda su tutti i framework successivi.

Rails è scritto in Ruby, un linguaggio orientato agli oggetti creato da Yukihiro Matsumoto che privilegia la leggibilità e l’espressività del codice. La scelta di Ruby non è casuale: la sua flessibilità sintattica permette a Rails di creare un DSL (domain-specific language) che rende il codice quasi leggibile come prosa.

Due principi fondamentali

Rails si fonda su due principi che ne definiscono l’identità. Convention over Configuration (CoC) significa che il framework assume impostazioni predefinite ragionevoli: se una tabella si chiama users, il modello sarà User, il controller UsersController, le viste nella cartella views/users. Lo sviluppatore scrive codice solo quando deve deviare dalla convenzione, eliminando centinaia di righe di configurazione XML tipiche dei framework Java dell’epoca.

Don’t Repeat Yourself (DRY) stabilisce che ogni concetto deve avere una singola rappresentazione autorevole nel sistema. Le migrations definiscono lo schema del database in Ruby e ne tracciano l’evoluzione nel tempo. Active Record implementa il pattern omonimo di Martin Fowler: ogni modello è una classe Ruby che mappa una tabella, ogni istanza una riga, con metodi per query, validazioni e relazioni.

Scaffolding e produttività

Il generatore di scaffold crea in un singolo comando modello, controller, viste, migration e route per un’entità CRUD completa. Non è codice da usare in produzione così com’è, ma un punto di partenza funzionante che elimina il boilerplate iniziale. Il routing RESTful mappa gli URL alle azioni del controller seguendo le convenzioni HTTP.

Il ciclo di sviluppo è rapido: si modifica il codice, si ricarica il browser, le modifiche sono immediatamente visibili senza ricompilazione né deploy. Il server integrato WEBrick permette di iniziare a sviluppare senza configurare un application server esterno.

Impatto sull’ecosistema

Rails dimostra che un framework può essere contemporaneamente opinato e produttivo. La velocità con cui è possibile passare da un’idea a un’applicazione funzionante alza l’asticella per tutti i framework web, indipendentemente dal linguaggio. I principi CoC e DRY diventano riferimenti universali nel design dei framework.

Link: rubyonrails.org

Vuoi supporto? Sei sotto attacco? Stato dei servizi
Vuoi supporto? Sei sotto attacco? Stato dei servizi