Breve introduzione molto informale a Ruby on Rails

Rails è un bel framework per costruire applicazioni web basato sul linguaggio Ruby. Ultimamente sta andando molto di moda: molti siti famosi sono stati scritti e sono in fase di scrittura con questo framework (cito Twitter e Diaspora).

Cerchiamo allora di vedere cosa offre questo framework, quali sono le sue caratteristiche principali, il modo con cui lavorarci, eccetera.

Rails è per sfaticati

Proprio come in varie arti marziali, in Rails il concetto di “meno fai e meglio è” prende il sopravvento. Rails, anche tramite il suo forte approccio MVC, ci permette di concentrarci sulla cosiddetta “business logic” invece di perderci nel solito, palloso codice sempre uguale per ogni progetto (lo capirete, se come me venite dal PHP).

Vogliamo creare una classe/modello che si agganci a una tabella del nostro db? In un mio progetto PHP ci ho messo circa 500 linee di codice, probabilmente un po’ buggate. La stessa cosa in Rails si fa in due righe:

class User < ActiveRecord::Base
end

Se poi vogliamo gestire la validazione dei dati, ad esempio del nome utente, la cosa diventa facile in un modo ridicolo:

class User < ActiveRecord::Base
  validates :username, :presence => true, :uniqueness => true
  validates_length_of :username, :minimum => 3, :maximum => 20
end

Ma non è finita qui. Ci penserà Rails a tenere traccia di tutte le modifiche che facciamo al database durante lo sviluppo, e si assicurerà che rimangano consistenti. Ha addirittura un ottimo motore di template che rende la scrittura delle pagine html una cosa da idioti. Vi dirò, è anche divertente.

Gli Unit Test? Perfettamente integrati e banalissimi. Le cose non finiscono qui ma mi fermo per non annoiare.

Rails è solo un giocattolino per nerd

Forse sono stato un po’ duro in questo titolo, ma la reazione dopo qualche giorno di utilizzo è stata più o meno quella. Tutte le automatizzazioni, tutte le righe di codice che abbiamo risparmiato, funzionano tramite un approccio che dice più o meno: “Se l’80% dei programmatori fa questa cosa, facciamo in modo che Rails la faccia in modo predefinito”. In questa maniera, il programmatore deve scrivere codice aggiuntivo soltanto se vuole fare cose in modo diverso da come le farebbe Rails. Stiamo parlando del paradigma Convention over Configuration.

Fin qui tutto bene. Ma avete un database legacy che non ha i nomi delle tabelle o dei campi come quelli che si aspetta Rails? Dovete scrivere codice. Volete modificare il comportamento predefinito di una pagina? Dovete scrivere codice. Volete usare database differenti per il vostro software, magari perché state lavorando con grandi set di dati da dividere? Suicidatevi.

Insomma, è vero che possiamo scrivere codice aggiuntivo, ma ogni volta che facciamo in modo diverso da come dice Rails… perdi tempo e diventa un casino. Perdi il controllo della situazione, quel controllo che con PHP senti di avere in ogni momento. Non c’è più Rails che ti tiene la mano e non sai più come fa l’accrocchio che stai scrivendo a reggersi in piedi.

Insomma Rails è da buttare?

No. Rails è un ottimo framework, soltanto che non è adatto a tutti i progetti. State per iniziare un nuovo, piccolo progetto in cui potete permettervi di sperimentare? Allora il mio consiglio è deciso e senza dubbi: provate Rails. Fatelo perché ne vale la pena. E questo è un ottimo libro che potrà accompagnarvi fin dai primi passi: Agile Web Development with Rails.

Il problema è che, a meno che non siate dei superguru nerd della programmazione, in progetti più grandi in cui troverete richieste strane… vi incaglierete da qualche parte e finirete col cercare la retta via su StackOverflow.

Seh vabbè cosa lo provo a fare? Meglio quello che uso già

Sebbene Rails abbia la marea di problemi che ho elencato prima, ha anche un grande vantaggio: lo stile di programmazione che ti obbliga a mantenere è uno stile intelligente. E lo stile è una cosa astratta: potrete riportarlo in ogni linguaggio a oggetti che utilizzerete.

Provando Rails ho avuto vari spunti a cui non avrei probabilmente mai pensato prima, e allo stesso tempo ho avuto la conferma che tante scelte che avevo fatto col tempo su PHP erano fatte bene: è soddisfacente vedere che su Rails sono implementate proprio come le avevo implementate io!

Una cosa è certa: da oggi, qualsiasi linguaggio io utilizzi, grazie all’esperienza maturata in circa un mese con Rails produrrò codice migliore e più pulito di quello che abbia mai prodotto in passato.

P.S. Accetto commenti e offese (è gratis)

2 pensieri su “Breve introduzione molto informale a Ruby on Rails

  1. Mi permetto di dire che “.. perdi tempo e diventa un casino. Perdi il controllo della situazione, quel controllo che con PHP senti di avere in ogni momento.” o “… non sai più come fa l’accrocchio che stai scrivendo a reggersi in piedi” sono secondo me affermazioni di chi ha provato Ruby/Rails per la prima volta, e lo compara magari con anni di sviluppo custom o from scratch con altri linguaggi.
    Una delle cose che più mi piacciono di Rails è che quando vai a fare cose strane, c’è sempre comunque un modo chiaro e conciso di farle e di posizionarle dove è logico che stiano.

    Consiglio: approfondiscilo :)

  2. Non escludo che tu abbia ragione, purtroppo ho avuto modo di provarlo soltanto per un periodo di tempo relativamente breve (forse non l’ho specificato chiaramente).
    Non che l’abbia abbandonato, anzi: Rails mi ha lasciato affascinato, e sto aspettando la prima occasione per ricominciare a usarlo :)
    A quel punto capiremo se è davvero una questione di abitudine!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *