Principales nouveautés
Rails 8.0 est sorti le 7 novembre 2024 et nécessite Ruby 3.2.0 ou supérieur. La version 8.1, publiée en octobre 2025, est la version courante ; Rails 8.0 ne reçoit plus que des correctifs de sécurité jusqu’au 7 novembre 2026. Parmi les ajouts majeurs, on trouve un générateur d’authentification complet, les adaptateurs Solid Queue, Solid Cache et Solid Cable, le déploiement intégré via Kamal 2 et Thruster, le support de SQLite en production et le remplacement de Sprockets par Propshaft.
bin/rails generate auth:installCe générateur crée modèles, contrôleurs, mailers et vues pour une authentification basée sur les sessions, éliminant le besoin d’un moteur externe comme Devise.
Architecture des adaptateurs Solid
Solid Queue devient le backend par défaut d’Active Job. Il exploite la clause FOR UPDATE SKIP LOCKED de PostgreSQL, MySQL ou SQLite pour dispatcher les jobs sans contention, et supporte la concurrence, les retries et les jobs récurrents. L’article indique que Solid Queue traite environ 20 millions de jobs par jour dans des environnements de production typiques.
Solid Cache remplace le cache en mémoire par un stockage disque sur NVMe, offrant une persistance entre les déploiements et la possibilité de chiffrer les données. Solid Cable, quant à lui, utilise le polling de base de données pour la messagerie en temps réel, avec des performances comparables à Redis dans la plupart des cas.
Un nouveau projet Rails 8 inclut automatiquement les gemmes correspondantes dans le Gemfile, configure config.cache_store = :solid_cache_store et config.active_job.queue_adapter = :solid_queue, et pointe cable.yml vers solid_cable. Les applications existantes peuvent installer chaque adaptateur séparément, par exemple :
bin/rails solid_queue:installDéploiement avec Kamal et Thruster
Kamal 2, livré avec Rails 8, déploie l’application dans un conteneur Docker sur des VM, serveurs bare‑metal ou VPS, sans passer par un PaaS. La commande kamal setup provisionne un environnement complet, incluant Thruster, un proxy HTTP/2 qui gère les certificats Let’s Encrypt, le cache d’actifs et la compression devant Puma. Depuis Kamal 2.8, le registre Docker local est utilisé par défaut, éliminant la dépendance à Docker Hub pour les déploiements de base.
Les gemmes kamal et thruster sont déclarées avec require: false, ce qui n’impacte pas le temps de démarrage de l’application si elles ne sont pas activées.
SQLite en production et pipeline Propshaft
Rails 8 officialise SQLite comme base de données de production, grâce à des améliorations du driver Ruby et de l’adaptateur : recherche plein texte, tables virtuelles, insertions de fixtures en masse, et transactions en mode IMMEDIATE pour réduire les blocages. Les erreurs SQLite3::BusyException sont traduites en ActiveRecord::StatementTimeout, alignant le comportement sur PostgreSQL et MySQL.
Propshaft remplace Sprockets comme pipeline d’actifs. Il se limite à la résolution des chemins et à l’ajout de digests aux noms de fichiers, laissant le bundling JavaScript à des outils externes comme esbuild, Bun ou Vite. Cette simplification correspond à l’évolution des pratiques modernes où les assets sont souvent gérés en dehors du framework.