Chiunque si sia avvicinato al framework del rubino sulle rotaie avrà sicuramente incontrato innumerevoli volte questo termine nelle guide – howtos – tutorials. Innanzitutto per chiarezza ne riporto il significato:
Scaffold (programming) (da wikipedia)
Scaffolding is a method of building database-backed software applications. It is a technique supported by some model-view-controller frameworks, in which the programmer may write a specification that describes how the application database may be used. The compiler uses this specification to generate code that the application can use to create, read, update and delete database entries, effectively treating the template as a “scaffold” on which to build a more powerful application. ...
In italiano possiamo pensare allo scaffolding come all’azione di creare un’impalatura (scaffold letteralmente significa impalcatura), una base, su cui poi iniziare la nostra costruzione. Ed è proprio sotto quest’ottica che Rails intende lo scaffolding, la possibilità di avere le 4 azioni base per accedere ad un dato (Model), senza doverle riscrivere ogni volta. In questo contesto compare un altro termine molto comune nell’ambiente:
Create, read, update and delete (da wikipedia)
C.R.U.D. Create, read, update and delete (CRUD) are the four basic functions of persistent storage, a major part of nearly all computer software. Sometimes CRUD is expanded with the words retrieve instead of read or destroy instead of delete. It is also sometimes used to describe user interface conventions that facilitate viewing, searching, and changing information; often using computer-based forms and reports. ...
I due termini non a caso sono collegati, infatti “l’impalcatura” di una applicazione che attinga ad un database per i dati ed il cui pattern architetturale sia l’MVC (model-view-controller) è composta proprio dalle 4 operazioni di creazione, ricezione, modifica, cancellazione. Per la filosofia Rails, secondo cui è inutile ripetersi (DRY, Don’t Repeat Yourself) , un framework agile, degno di tale aggettivo, deve fornire la possibilità di avere uno scaffold a costo zero. Rails fornisce 2 tipo di scaffold:
scaffold :model_name
In questo modo il controller avrà le azioni di create – update – list – show – destroy (CRUD).
script/generate scaffold model_name
Questo, almeno sommariamente, esaurisce l’argomento scaffold, se non fosse che, sempre secondo la suddetta filosofia Rails, qualcuno ha pensato che si poteva fare anche qualcosa di più, ovvero creare uno scaffold leggermente più sofisticato, magari con una bella interfaccia AJAX, con qualche effetto Javascript, decorato con i css. In fondo perchè perdere tempo a rifare sempre le stesse cose??? Ed ecco che sono nati dei plugins molto interessanti. I più famosi sono ActiveScaffold , Streamlined , Hobo , AutoAdmin .
Il primo, che personalmente utilizzo e prediligo, inizialmente è nato come generator. All’epoca si chiamava AjaxScaffold ed era decisamente più scarno rispetto all’attuale. Successivamente è nata la versione a plugin ed infine il progetto è stato rinnovato, riscritto e risistemato ed ha preso il nome di ActiveScaffold. Attualmente è un progetto estremamente attivo, con una bella community che lo utilizza – testa – sviluppa. L’obiettivo di tale plugin è offrire un’interfaccia a tabelle AJAX, intelligente ed altamente configurabile per accedere ai dati.
Streamlined è anch’esso un progetto molto interessante. Si tratta di un framework per realizzare pannelli di amministrazione. Infatti, a differenza di ActiveScaffold, genera in automatico tutta l’applicazione, compreso per esempio il menù.
Hobo, come Streamlined, si pone obiettivi più ambizioni rispetto al semplice CRUD, infatti è un framework per lo sviluppo di web applications che fornisce interfacce AJAX dinamiche, gestione dei temi, un linguaggio di mark-up personalizzato (DRYML).
AutoAdmin, infine, è un plugin per creare interfacce d’amministrazione e si ispira a Django, un framework MVC scritto in Python.
Fonti: