RoR Kung Fu a Unisannio
Posted by ivan, Thu Aug 09 11:00:00 UTC 2007

Il Gruppo Pierogi nasce per l’esame di Basi di Dati del nostro corso di laurea ad Unisannio. Il professore ha lungimirantemente concesso a tutti i gruppi di scegliere gli strumenti per completare il progetto. Spinti dagli amici di The Ruby Mine, abbiamo deciso di usare Ruby on Rails. Entusiasti della novita’, ci siamo subito buttati sulla documentazione. Dopo una veloce configurazione di Postgresql e la modifica al file database.yml, abbiamo scoperto la potenza di “scaffold”. Abbiamo addirittura avuto modo di sfruttare la perla delle convenzioni Ruby on Rails: “oggetto person => tabella people”.
Alcuni di noi erano totalmente all’oscuro di tutte le convenzioni per lo sviluppo web. Durante l’esperienza universitaria non era mai capitato di incontrare l’ MVC: Cosa diavolo e’ una vista?
Avevamo solo 10 giorni e i primi due erano volati via solo per scartare SQLite e MySQL per alcune incompatibilita’ col progetto da sviluppare. Cominciava a salire lo sconforto.
In fondo avremmo potuto fare tutto in JSP e Servlet come ci avevano insegnato all’Universita’ senza imbarcarci nell’ennesima avventura a perdere, inseguendo la novita’ geek che nessuno avrebbe mai usato per le cose serie. Fortunatamente sono bastate poche fondamentali cose per scacciare tutto il malumore:- Webrick
- Scaffold
- find_by_…
Webrick e’ stato tremendamente utile in fase di sviluppo. Non abbiamo dovuto installare niente che non fosse gia’ nel framework. Niente Apache, niente Tomcat, niente JDBC. Niente di niente. Al mattino, quando riprendevano i lavori bastava uno
1 2 |
script/server |
e il nostro nascente progetto era raggiungibile ad http://localhost:3000.
Scaffold ci ha fornito una comodissima interfaccia al DB. E’ risultato comodo avere gia’ i form per il popolamento del database. Al di la’ di non dover interagire direttamente con Postgresql o utilizzare un file esterno per le INSERT, tutto il materiale che scaffold ha creato in automatico: viste, controller, metodi di CRUD, e’ stato fondamentale per la comprensione della sintassi base. Dopo un paio di tutorial e dopo lo studio del codice che avevamo, siamo andati avanti semplicemente con l’API.
Piu’ passavano le ore piu’ programmavamo spediti. Le basi accademiche di programmazione ad oggetti hanno contribuito a capire l’approccio da seguire. Poi Ruby ha pensato a sollevarci da inutili fardelli. E’ stata una gioia dimenticare parentesi e “punti e virgola”. Quello che hai scritto non e’ ambiguo? Ottimo, puoi evitarti parentesi e punteggiatura varia. Il disporre di una sintassi cosi’ snella, ma cosi’ potente ha consentito di evitare ingombranti ambienti di sviluppo. Non c’e’ stato il bisgno di usare Eclipse o simili. E’ bastato emacs debitamente corredato di plugin per Ruby.
L’aver progettato il DB secondo la piu’ efficiente prassi ci ha consentito di sfuttare la potenza di Ruby. Qualsiasi query veniva effettuata con un semplice find corredato dall’ID del record da cercare. Abbiamo anche avuto modo di sfruttare find_by_sql, un potente strumento che e’, pero’, visto di cattivo occhio dai programmatori piu’ capaci. Noi eravamo sostanzialmente novizi e pressati della data d’esame sempre piu’ vicina. Eseguire query innestate e vedersi restituire un semplice @films con tutti i film che corrispondevano ai nostri criteri di ricerca e’ stato particolarmente gratificante. La semplicita’ con cui poi sfogliavamo @films nelle viste era incredibile. Per avere la lista dei titoli dei film bastava scrivere nella vista:
1 2 3 4 |
<% for film in @films %> <%=h film.name %> <% end %> |
Seguire le convenzioni di Ruby e’ stato comodo e poco impegnativo. Per evitarci ulteriori e inutili configurazioni, abbiamo scelto di usare la lingua inglese per attributi e tabelle del DB. Ruby ha gestito la cosa con la sua solita semplicita’. L’oggetto cinema aveva la sua tabella cinemas nel database. Allo stesso modo film, room, address. Persino person aveva la sua tabella people. Questa ci e’ parsa una vera chicca :-)
Morale della favola, il nostro sistema Busca la pelicula, clone di Trovacinema.it, e’ venuto su in una settimana. Abbiamo sviluppato le operazioni richieste dal progetto piu’ una marea di operazioni implicite che venivano fuori man mano che si implementava il tutto. Era cosi’ semplice implementare una funzione in piu’ che ci sembrava un peccato non approfittarne. Con qualche riga di codice riuscivamo a dare all’utente finale la possibilita’ di una operazione magari insolita e non formalmente richiesta, ma pur sempre una funzione in piu’. Alla fine e’ diventato un vero e proprio divertimento. Siamo arrivati al punto di integrare un tema di Mephisto per rendere il progetto simile per grafica e layout al blog di Ivan. Francesca si e’ occupata anche di creare una nuova immagine header da piazzare in homepage.
In seduta d’esame lo stupore dei professori e’ stato piuttosto gratificante. E’ stato sorprendente per loro sapere che il tutto e’ stato progettato e implementato in dieci giorni, partendo sostanzialmente da zero. Hanno chiesto in che modo ci fossimo interfacciati a Postgresql e abbiamo mostrato loro i venti secondi di configurazione necessari. Abbiamo mostrato la leggerezza e l’immediatezza della sintassi e le varie convenzioni. Abbiamo mostrato come tutte le operazioni e le query sql fossero recuperabili semplicemente accedendo ad un file:
1 2 |
tail -f log/development.log |
e’ di una comodita’ disarmante, specialmente ai fini didattici. Fortunatamente tutto questo pro RoR non ha offeso i professori. La nostra iniziale paura era la consolidata ossessione per il mondo Java che regna sovrana ad Unisannio. Siamo invece rimasti sorpresi nel vedere il sincero interesse dei due docenti, contenti soprattuto della boccata d’aria fresca portata in facolta’.
L’esame si e’ concluso nel migliore dei modi. Una bella “lode” e tutti vissero felici e contenti.
Francesca, Ivan e Luca
BIOs
Francesca De Rosa e’ laurenda in Ingegneria Informatica all’Universita’ degli Studi del Sannio. Ha avuto esperienza con Java e RoR. Attualmente utilizzatrice di Kubuntu. Contattabile su unisannio@places.sameplace.cc
Luca Fusco, in arte “el Dobre”, e’ studente di Ingegneria Informatica ad Unisannio. Appassionato di tecnologia e gioco d’azzardo, passa il suo tempo a coniugare le due cose, fin’ora con scarsi successi. Membro “negativo” del gruppo Pierogi, supporta lo sviluppo e la programmazione in ambiente Windows perché, a suo dire: “qualcuno lo deve pur fare”. Lo trovate in giro per i forum di poker o su MSN: funboy82 [at] inwind [dot] it
Ivan Morgillo e’ studente di Ingegneria Informatica ad Unisannio. Appassionato di tecnologia: geek e nerd quanto basta. Attualmente pseudo programmatore Java, RoR e JS. Membro del Sanniolug e Kubuntu user, tester e scriptlet developer per SamePlace. Lo beccate su unisannio@places.sameplace.cc . Ha anche un blog
Ciao,
Ivan
Ciao,
Ivan
Ciao,
Ivan
Ciao,
Ivan