La version 7.0 du cadriciel Ruby on Rails a fait son apparition le 15 décembre 2021.
Pour rappel, Rails est un framework web complet développé en Ruby qui encourage la lisibilité du code, tout en privilégiant les conventions à la configuration.
Il fait la part belle à l'architecture Modèle-Vue-Contrôleur (MVC) et s’appuie sur un certain nombre de sous-ensembles :
- Active Model qui permet de créer des objets Ruby suivant un mapping objet-relationnel (ORM)
- Action View qui est responsable de la génération des pages HTML
- Action Controller qui gère le cycle de vie des requêtes de l'application (cela inclut les sessions, les filtres, les cookies, le streaming de données et le traitement des exceptions)
- Action Pack qui traite les requêtes web tout en fournissant la couche de contrôle MVC
- Active Record qui permet aux modèles d'interagir avec la base de données de l'application
- Action Cable qui permet d'écrire des fonctionnalités temps réel grâce au protocole WebSocket
- Action Mailbox qui permet de recevoir des mails dans une application
- Action Mailer qui permet d'envoyer des mails depuis une application
- Action Text qui fournit tout qu'il faut pour gérer du contenu incluant du texte enrichi
- Active Job qui permet d'exécuter des travaux en arrière-plan selon différentes approches de mise en file d'attente
- Active Storage qui facilite le téléversement de fichiers vers un service de stockage dans les nuages, la transformation et l'extraction de métadonnées
- Active Support qui fournit un certain nombre d'extensions au langage Ruby
Vous avez forcement croisé un site utilisant ce cadriciel : GitHub, Twitch, Airbnb, Kickstarter ou encore LinuxFr.org !
Une toute nouvelle approche du JavaScript
Allant à l'encontre de la mode des applications web monopage et du tout Node.js, cette version de Rails offre plusieurs possibilités :
- construire des applications dynamiques en minimisant l'utilisation du JavaScript et en favorisant le HTML au lieu du JSON. Cette approche est possible grâce à la nouvelle bibliothèque Hotwire
- l'import de modules JavaScript au travers des fichiers versionnés, directement à partir du navigateur grâce à Import maps
- il est maintenant possible d'utiliser n'importe quel bundler JavaScript, comme esbuild, rollup.js ou le plus classique Webpack, grâce à la nouvelle gem jsbundling-rails
- suivant la même approche pour le CSS, la gem cssbundling-rails permet dorénavant de compiler facilement sa feuille de style en intégrant Tailwind CSS, Sass ou encore PostCSS
Attributs chiffrés avec Active Record
Il est maintenant possible de déclarer des attributs pour chiffrer certaines données au niveau du modèle :
# app/models/article.rb
class Article < ApplicationRecord
encrypts :title
end
# Article.create! title: "Sortie de Ruby on Rails 7.0"
# INSERT INTO `articles` (`title`) VALUES ('{\"p\":\"n7J0/ol+a7DeaE[...]1/YjMHbHD4talgF9dt61A==\"}}')
Le chiffrement se fait de manière transparente avant l'enregistrement en base de données.
Chargement asynchrone des requêtes
Lorsqu'une action du contrôleur doit exécuter plusieurs requêtes, il est maintenant possible de le faire simultanément grâce à Relation#load_async.
Jusqu'à présent, exécuter trois requêtes durant 100 ms chacune nécessitait 300 ms. Maintenant, il est possible de le faire en parallèle.
Zeitwerk par défaut
Le chargement automatique dans Rails a toujours été synonyme d'élégance.
L'ancienne approche, qui s'accompagnait d'une série de bizarreries et de fonctionnalités manquantes, a finalement été remplacée exclusivement par le chargeur de code Zeitwerk.
Et la dette technique de LinuxFr.org dans tout ça ?
On ne va pas se mentir : les montées de version majeure de Rails ne sont pas facile à appliquer si l'on souhaite utiliser les dernières fonctionnalités.
Au moment où j'écris, la version propulsant ces quelques lignes recevra des correctifs de sécurité majeurs jusqu'au 1er juin 2022.
Vous l'aurez compris : il nous reste encore 6 mois pour procrastiner tranquillement !
Aller plus loin
- Site web (90 clics)
- Guide (29 clics)
- Construire et déployer un blog en 34 minutes (70 clics)
- Code source de ce blog (37 clics)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.