Indice
- Backend
- Riduzione delle dipendenze con adattatori "Solid"
- Pipeline delle risorse modernizzata con Propshaft
- Miglioramenti in Active Record
- Supporto avanzato per SQLite in produzione
- Sistema di autenticazione integrato
- Miglioramenti nella gestione dei Dockerfile
- Frontend
- Potenziamenti con Stimulus e Turbo
- Deployment
- Deployment semplificato con Kamal 2 e Thruster
- Conclusione

Ruby on Rails è da sempre una tecnologia centrale nel nostro stack di sviluppo. Grazie alla sua sintassi elegante, alla filosofia "convention over configuration" e al ricca ecosistema di gemme, Rails ci ha permesso di realizzare numerosi progetti in modo rapido ed efficiente. Che si tratti di applicazioni web complesse, API scalabili o soluzioni SaaS, questo framework ha dimostrato di essere una scelta affidabile e produttiva.
L'8 novembre 2024 è stata rilasciata la versione 8 di Ruby on Rails, introducendo una serie di miglioramenti significativi in termini di performance, distribuzione e sviluppo moderno. In questo articolo esploreremo le principali novità di questa release e il loro impatto sul nostro modo di sviluppare applicazioni web.
Backend
Riduzione delle dipendenze con adattatori "Solid"
Rails 8 vuole ridurre il numero di servizi accessori necessari per il funzionamento completo dell'applicazione. Se in passato erano necessari database come MySQL o PostgreSQL e servizi come Redis per job, caching e WebSocket, ora, grazie a una serie di nuovi adattatori basati su database è possibile gestire queste funzionalità utilizzando SQLite. Questi adattatori sono: Solid Cable, Solid Cache e Solid Queue, vediamoli meglio.
- Solid Cable sostituisce Redis come server per la gestione dei WebSocket, utilizzando un sistema di polling veloce che garantisce prestazioni simili a Redis quando usato con SQLite sullo stesso server. Inoltre, conserva i messaggi per un giorno, facilitando il debugging.
- Solid Cache prende il posto di Redis o Memcached per la memorizzazione dei cache dei frammenti HTML, utilizzando il disco anziché la RAM. Questo permette di avere una cache più ampia e durevole, con opzioni di crittografia e gestione della conservazione dei dati, agevolando la conformità alle normative sulla privacy.
- Solid Queue permette di gestire le code dei job direttamente nel database, eliminando la necessità di servizi esterni come Redis. Questo semplifica l'infrastruttura dell'applicazione e riduce la dipendenza da strumenti esterni.
Pipeline delle risorse modernizzata con Propshaft
Rails 8 introduce Propshaft, una pipeline delle risorse modernizzata che sostituisce Sprockets. Propshaft offre una gestione più snella e intuitiva degli asset, migliorando la compatibilità con strumenti JavaScript contemporanei come bun, esbuild e Vite. Questo aggiornamento mira a migliorare l'efficienza dello sviluppatore e a ridurre la complessità della configurazione.
Miglioramenti in Active Record
La nuova versione apporta miglioramenti significativi ad Active Record, il componente ORM di Rails. Questi aggiornamenti includono ottimizzazioni delle query e una gestione più efficiente delle associazioni, contribuendo a migliorare le prestazioni complessive dell'applicazione e a semplificare l'interazione con il database.
Supporto avanzato per SQLite in produzione
Rails 8 migliora il supporto per l'utilizzo di SQLite in ambienti di produzione, rendendolo una scelta più praticabile per applicazioni di piccole e medie dimensioni. Questi miglioramenti includono una gestione più robusta delle connessioni e ottimizzazioni delle prestazioni, offrendo agli sviluppatori maggiore flessibilità nella scelta del database più adatto alle loro esigenze.
Sistema di autenticazione integrato
Una delle novità più attese è l'inclusione di un generatore di sistemi di autenticazione completo. Questo strumento fornisce una soluzione pronta all'uso per l'implementazione di sistemi di autenticazione basati su sessione, riducendo la necessità di implementazioni personalizzate o di ricorrere a fornitori terzi. Inoltre, Rails 8 offre un'integrazione senza soluzione di continuità con strumenti di sicurezza come 1Password, Bitwarden e LastPass, semplificando la gestione dei dati sensibili e garantendo la conformità alle normative sulla protezione dei dati come GDPR e CCPA.
Miglioramenti nella gestione dei Dockerfile
Rails 8 semplifica e accelera la configurazione dei Dockerfile per le applicazioni Rails, con un focus sulla prontezza per la produzione. Questi miglioramenti includono la separazione delle esigenze di sviluppo e produzione, l'uso di immagini di base sicure e il miglioramento della cache per riutilizzare i layer invariati, accelerando le build e migliorando i tempi di deployment nelle pipeline CI/CD.
Frontend
Potenziamenti con Stimulus e Turbo
Oltre alle numerose innovazioni sul lato backend, Rails 8 ha introdotto miglioramenti anche per il frontend, grazie all'evoluzione di Stimulus e Turbo, due tecnologie chiave della suite Hotwire.
Stimulus, il framework JavaScript minimalista per Rails, è stato potenziato con nuove API che rendono ancora più semplice la gestione degli eventi e il controllo del DOM. Ora, gli sviluppatori possono sfruttare binding più efficienti, migliorando l'interattività delle applicazioni senza dover ricorrere a framework più pesanti come React o Vue.
Turbo ha ricevuto miglioramenti significativi, rendendo il caricamento delle pagine ancora più veloce e ottimizzando la navigazione dinamica. Turbo Frames e Turbo Streams sono stati perfezionati per migliorare l'aggiornamento parziale delle pagine, riducendo il numero di richieste al server e migliorando le prestazioni complessive delle applicazioni web.
Questi miglioramenti consentono di sviluppare interfacce più reattive e fluide, mantenendo al minimo l'uso di JavaScript personalizzato e riducendo la complessità del codice frontend.
Stimulus, il framework JavaScript minimalista per Rails, è stato potenziato con nuove API che rendono ancora più semplice la gestione degli eventi e il controllo del DOM. Ora, gli sviluppatori possono sfruttare binding più efficienti, migliorando l'interattività delle applicazioni senza dover ricorrere a framework più pesanti come React o Vue.
Turbo ha ricevuto miglioramenti significativi, rendendo il caricamento delle pagine ancora più veloce e ottimizzando la navigazione dinamica. Turbo Frames e Turbo Streams sono stati perfezionati per migliorare l'aggiornamento parziale delle pagine, riducendo il numero di richieste al server e migliorando le prestazioni complessive delle applicazioni web.
Questi miglioramenti consentono di sviluppare interfacce più reattive e fluide, mantenendo al minimo l'uso di JavaScript personalizzato e riducendo la complessità del codice frontend.
Deployment
Deployment semplificato con Kamal 2 e Thruster
Una delle principali novità di Rails 8 riguarda l'integrazione di Kamal 2. Si tratta di uno strumento che facilita il deployment delle applicazioni su qualsiasi server, che si tratti di una macchina virtuale nel cloud o un hardware locale. Grazie a questa integrazione è possibile configurare un server Linux per ospitare l'applicazione, richiedendo solo gli indirizzi IP dei server e una chiave SSH. Questo processo permette di mettere in produzione un'applicazione in meno di due minuti.
Inoltre, Rails 8 include un Dockerfile ottimizzato che incorpora Thruster, un proxy che lavora davanti al server web Puma. Thruster migliora le prestazioni grazie a X-Sendfile, caching e compressione degli asset, eliminando la necessità di usare server web aggiuntivi come Nginx. Questo significa che il container standard di Rails può ricevere traffico immediatamente.
Inoltre, Kamal 2 introduce Kamal Proxy, un proxy personalizzato che sostituisce alternative come Traefik. Kamal Proxy assicura aggiornamenti senza interruzioni, certificati SSL automatici con Let's Encrypt e supporto per più applicazioni su un unico server senza configurazioni complicate.
Inoltre, Rails 8 include un Dockerfile ottimizzato che incorpora Thruster, un proxy che lavora davanti al server web Puma. Thruster migliora le prestazioni grazie a X-Sendfile, caching e compressione degli asset, eliminando la necessità di usare server web aggiuntivi come Nginx. Questo significa che il container standard di Rails può ricevere traffico immediatamente.
Inoltre, Kamal 2 introduce Kamal Proxy, un proxy personalizzato che sostituisce alternative come Traefik. Kamal Proxy assicura aggiornamenti senza interruzioni, certificati SSL automatici con Let's Encrypt e supporto per più applicazioni su un unico server senza configurazioni complicate.
Conclusione
Rails 8 introduce una serie di aggiornamenti significativi che semplificano lo sviluppo, migliorano le prestazioni e aumentano la sicurezza delle applicazioni. Se stai cercando un partner affidabile per sviluppare il tuo progetto in Ruby on Rails o per la manutenzione della tua applicazione, DevInterface può offrirti esperienza, supporto e soluzioni su misura. Contattaci per scoprire come possiamo aiutarti a sfruttare al meglio le potenzialità di Rails 8!