prism
Un framework web in Ruby basato esclusivamente sulla libreria standard - senza gem esterne. Router, livello dei controller, ORM su file con migrazioni, layout e partial.
Un framework web in Ruby costruito esclusivamente sulla libreria standard. Nessuna gem esterna: un router fatto a mano, uno strato di controller, un ORM su file con migrazioni, layout e partial. Tutto ciò che di solito ottieni da Rails, scritto da zero per capire come funziona davvero.
Introduzione
Rails è ottimo, ma dopo anni passati solo a usarlo, è facile dimenticare come lavora sotto. prism è un passo deliberato un livello più in basso: non c'è una sola gem esterna, quindi ogni pezzo doveva essere capito abbastanza bene da scriverlo da soli. Il routing, il dispatch verso un controller, il rendering di una vista, lo strato dati.
Il risultato è un piccolo framework che serve davvero un'applicazione, e allo stesso tempo una mappa di ciò che la concorrenza fa dietro le quinte. Non è un mockup di un framework ma un insieme funzionante in cui ogni strato è a portata di mano, perché l'hai scritto con le tue mani.
Un router che districa il percorso da solo
Il cuore di ogni framework web è la decisione su quale codice gestisce una data richiesta. In prism questa decisione è esplicita: dichiari le rotte e il router abbina metodo e percorso a una coppia controller più azione, estraendo lungo il cammino i parametri dai segmenti dell'indirizzo. Qui non c'è magia, c'è una tabella di regole letta dall'alto verso il basso.
Quando scrivi il dispatch da solo, smette di essere una scatola nera. Vedi esattamente dove un percorso si trasforma in una chiamata di metodo, ed è proprio la conoscenza che ti manca quando il framework lo fa per te.
Gli strati dati e vista senza colla nascosta
Invece di collegare Postgres, prism tiene i dati in file e vi aggiunge migrazioni più query semplici. Basta a mostrare l'intero ciclo: definisci un modello, esegui una migrazione, salvi un record e lo rileggi in un controller. Il database esce dal campo visivo, e ciò che resta in cima è la pura forma di come un ORM mappa i record sugli oggetti.
Limitarsi ai file non è una mancanza ma una decisione. Grazie a essa lo strato dati sta in testa per intero e non nasconde alcun passo dietro un driver di database che comunque non si vede.
Il rendering di una vista sembra banale finché non provi a comporla a partire da strati. prism ha layout in cui viene iniettato il contenuto dell'azione, e partial che compongono i pezzi ripetuti. Esattamente lo stesso meccanismo che nei grandi framework avviene in modo invisibile qui è una funzione esplicita che hai scritto tu stesso.
Quando tutto è scritto a mano, il debug significa leggere il proprio codice, non indovinare cosa fa il framework. Questo è il vantaggio principale dell'esercizio: lo strato di cui dovevi dedurre il comportamento semplicemente scompare.
Una mappa di ciò che Rails nasconde dietro le quinte
Il guadagno più grande di prism non è il framework stesso ma ciò che resta in testa dopo averlo scritto. Router, controller e ORM insieme stanno in qualche centinaio di righe di Ruby leggibile, e ognuna di queste righe corrisponde a un pezzo che Rails fa dietro le quinte. Dopo questo esercizio un grande framework smette di essere magia e diventa un insieme di decisioni che capisci.
Da dove di solito, e da dove in prism
| Elemento | Di solito pronto all'uso | In prism |
|---|---|---|
| Routing | Rails | router fatto a mano da zero |
| Strato dati | ActiveRecord | ORM su file con migrazioni |
| Viste | ActionView | layout e partial a mano |
| Dipendenze | decine di gem | zero, solo la stdlib |
Altri progetti
Altri lavori della stessa categoria - scopri come affrontiamo sfide simili.
Hai un progetto simile?
Contattaci - il preventivo è gratuito e arriva entro un'ora.



