Ruby on Rails est un framework qui ne cesse de se développer depuis sa création en 2003. Son accessibilité grâce à l’Open Source, ainsi que sa flexibilité, font de Ruby une référence pour le développement des applications web. Alors que les développeurs cherchent à améliorer les performances de leurs applications, une mise à jour de l’outil est sortie le 7 novembre 2024. Découvrons ensemble les principales nouveautés de la version 8.0 de Ruby on Rails.
1. Kamal et Thruster : intégrer l’application plus rapidement
Auparavant, le déploiement d’une application nécessitait l’utilisation de plusieurs outils externes et de configurations complexes pour les développeurs Rails (Bacancy). L’outil Kamal 2 utilise Docker pour stocker l’application dans un conteneur léger, sous la forme d’une image prête pour la production. Avec une seule commande : “kamal setup”, vous configurez rapidement les serveurs sur une machine Linux standard (App Signal). Vous avez uniquement besoin de votre clé SSH (Secure Shell) déposée pour accéder aux adresses IP (Internet Protocol) de ces serveurs.
Les applications sont déployées sur des machines virtuelles cloud, des serveurs sur site ou des environnements VPS (serveur privé virtuel). Ainsi, si un serveur tombe en panne, les autres continuent de servir les utilisateurs. Les mises à jour s’effectuent sans coupure de l’application. Deux proxys sont à l’origine de ces performances :
- Thruster fonctionne avec le serveur web Puma pour fournir plusieurs fonctionnalités. Il s’agit de la prise en charge HTTP/2, la compression Gzip des actifs ou encore l’automatisation des certificats TLS grâce à Let’s Encrypt (GitHub). Comme sa configuration n’est pas complexe, le conteneur est prêt à être utilisé sur le Net.
- Kamal Proxy remplace l’option Traefik. Il partage quelques fonctionnalités communes avec Thruster, notamment Let’s Encrypt ou les déploiements sans interruption de service. Le renouvèlement automatique des certificats TLS réduit le risque d’erreurs humaines (GitHub).
2. SQLite : réduire le nombre de services accessoires pour gérer les données
Les développeurs constatent que les disques SSD et NVMe sont suffisamment rapides pour traiter un grand nombre de tâches. L’utilisation de solutions reposant sur la RAM devient obsolète. SQLite propose aux développeurs une solution de stockage compatible pour certains projets spécifiques ou faciliter le déploiement sans PaaS. Cette solution tout-en-un ne remplace les services accessoires MySQL, PostgreSQL et Redis, qui restent disponibles pour des projets plus simples.
L’objectif est de proposer une solution tout-en-un pour la gestion des files d’attente des tâches, la mise en cache et le protocole WebSocket. Pour cela, le système repose sur trois adaptateurs liés à la base de données (Ruby On Rails).
Solid Cable : accélérer le temps de chargement de l’application
Solid Cable conserve les messages échangés entre l’application et ses utilisateurs, selon le protocole WebSocket. Cette fonctionnalité facilite l’exécution des mises à jour en temps réel et leur stockage dans la base de données centrale. Ainsi, le développeur ne dépend plus de Redis car Solid Cable conserve la même vitesse de traitement.
Solid Cache : améliorer la mémoire de l’application
Solid Cache s’occupe de la mise en cache des données en lieu et place de Redis ou de Memcached. Reposant sur des disques SSD et NVMe, les caches de cet adaptateur sont plus volumineux et plus économiques que le stockage sur la RAM. Avec une capacité de 10 téraoctets de données, vous disposez d’une fenêtre de rétention de 60 jours sans réduire les performances de l’application.
Solid Queue : traiter les tâches actives en arrière-plan
Solid Queue remplace des outils conçus pour la gestion des tâches actives, comme Resque, Delayed Job ou Sidekiq. Il est compatible avec SQLite pour de petites applications. Néanmoins, avec MySQL ou PstgreSQL, la fonctionnalité “For Update Skip Locked” devient nécessaire pour traiter une tâche après l’autre sans blocage.
En plus de gérer la concurrence des fichiers d’attente, ce backend détecte les échecs dans leur exécution. Dans ce cas, les tâches correspondantes sont mises en attente avant d’entreprendre un nouvel essai, le tout sans compromettre les performances de l’application (GitHub). Par exemple, une boutique en ligne peut ainsi gérer ses promotions sans risque de blocage de son application.
3. Propshaft : optimiser l’expérience utilisateur avec un nouveau pipeline d’actifs
Propshaft est le nouveau pipeline d’actifs qui gère les fichiers statiques à la place de Sprockets. En suivant la stratégie #NOBUILD, l’accent est mis sur la légèreté et l’efficacité dans la diffusion des fichiers statiques (images, fichiers CSS ou JavaScript). Le pipeline utilise des empreintes numériques, les digests, afin que les navigateurs procèdent à une mise en cache optimale. Les fichiers ne changent pas d’URL tant que leur contenu reste identique.
Propshaft ne se préoccupe pas des tâches trop complexes. D’autres outils de gestion des actifs, comme esbuild ou Vite, se chargent de cette activité. Les temps de chargement sont, par conséquent, optimisés et l’expérience utilisateur n’en est que plus positive.
4. ActiveRecord : booster les performances de la base de données
La mise à jour d’ActiveRecord, le module central pour la gestion de données, a permis la suppression de configurations obsolètes. Les modifications suivantes ont pour objectif d’améliorer le dépannage et de simplifier les migrations, le tout pour rendre les schémas de données plus flexibles :
- La distinction entre les commandes “float 4” et “float 8” dans PostgreSQL permet de différencier les termes numériques, en fonction de leur nombre de chiffres significatifs.
- Les tables sont prises en charge au niveau de leur héritage, de leur suppression en simultané ou de leur partitionnement natif.
- Plusieurs appareils peuvent être insérés en même temps pour améliorer l’amorçage des données.
- Le schéma de la base de données est d’abord téléchargé avant d’effectuer sa migration.
- L’activation des balises du journal des requêtes se fait par défaut, afin d’identifier la base de données en cours d’utilisation grâce aux instructions SQL.
5. Ruby on Rails 8.0 : les nouvelles commandes pour sécuriser l’authentification
La version 8 de Ruby on Rails rassemble dans un même générateur de système les commandes d’authentification développées dans ses versions précédentes. Nous faisons référence à :
- has_secure_password (Rails 5) ;
- generates_token_for (Rails 7.1) ;
- password_reset (Rails 7.1) ;
- authenticate_by (Rails 7.1) ;
Dans le core de Rails, cette compilation permet le rapprochement des fonctionnalités de gems tierces, comme Devise. De nombreuses applications continuent d’utiliser ce dernier car il reste encore utile pour des configurations complexes (définition de rôles, confirmations d’adresses mail, etc.). La limitation de débit permet de mieux gérer les erreurs et d’éviter les abus de requêtes dans l’application. Cependant, ils gardent une certaine flexibilité pour réinitialiser les mots de passe (“passwordController”).
À noter l’ajout de mesures de sécurité pour les fonctionnalités suivantes :
- Kamal console : intégration de 1password, Bitwarden et LastPass
- Solid Cache : stockage et conservation chiffrées pour répondre aux exigences de confidentialité.
6. Conclusion
Idéematic est une agence web Ruby on Rails reconnue pour son expertise. Notre équipe vous accompagne tout au long de votre projet d’application, de sa conception à sa production. Nous sommes ravis de la sortie de la version 8.0 de Ruby on Rails pour la flexibilité, la simplification et la sécurité qu’elle apporte aux applications. Nous sommes à votre disposition pour créer une application toujours plus performante et visible sur les moteurs de recherche ou les App Store.
Nous vous invitons à consulter notre liste des grandes entreprises qui ont adopté ce framework, puis à prendre contact avec nous pour la création de votre app web sur mesure.