Cette version de Rails est le fruit de plusieurs années de réflexion. C'est la concrétisation d'une vision qui consiste à présenter une approche véritablement complète du développement web, qui s'attaque avec la même vigueur aux défis du front-end et du back-end. Un menu omakase qui comprend tout, de l'apéritif au dessert. Rails est basé sur deux principes fondamentaux :
- pas de répétition : tenter autant que possible de n'avoir des éléments de l'application qu'à un seul endroit. L'architecture MVC et la métaprogrammation en Ruby peuvent faciliter cela ;
- convention plutôt que configuration : les éléments de configuration ne sont nécessaires que s'ils ne respectent pas les conventions établies. Rails exploite cela en proposant des comportements par défaut pour la plupart de ses fonctionnalités.
Avec les progrès réalisés dans la prise en charge des navigateurs ES6/ ESM (EcmaScript Modules), l'adoption généralisée de HTTP/2 et la nouvelle norme passionnante pour les cartes d'importation, c'est enfin possible. Rails 7 tire parti de toutes ces avancées pour proposer une approche sans node par défaut pour le front-end, sans pour autant sacrifier l'accès aux paquets npm ou le JavaScript moderne.
La combinaison de Turbo et de Stimulus de Hotwire offre tous les outils nécessaires pour produire des expériences utilisateur fantastiques qui ne laissent rien à désirer par rapport aux applications à page unique - pour une fraction de la complexité. C'est le choix par défaut pour les nouvelles applications Rails, qui remplace les options beaucoup plus limitées de Turbolinks et Rails UJS.
Si la plupart des applications Rails n'ont pas besoin de dépendre de Node compte tenu de ces valeurs par défaut, l’équipe a tout de même réussi à améliorer considérablement l'intégration pour celles qui en ont besoin dans Rails 7. Fini le couplage étroit de Webpack avec Webpacker, place à un couplage plus souple avec n'importe quel bundler JavaScript. Il est possible d’utiliser esbuild ou rollup.js ou même Webpack grâce à la nouvelle intégration jsbundling-rails qui peut être préconfigurée pour les nouvelles applications avec --javascript esbuild. La même approche est adoptée pour les bundlers CSS qui reposent sur Node. Avec Rails 7, tout ce qu'ils doivent être capables de produire est un fichier application.css compilé, et ils s'intégreront parfaitement.
Le chemin par défaut sans Node est considérablement plus simple, étonnamment performant, et il va dans le sens de ce que le futur développement frontal est susceptible de faire de toute façon. L'autre voie d'intégration avec Node est plus légère, moins prescriptive et moins fragile que jamais. Ce sont les meilleurs choix par défaut que l’équipe de développement n’a jamais eu pour le développement frontal dans Rails. Voici, ci-dessous, quelques-unes des nombreuses autres nouvelles fonctionnalités et améliorations :
Chiffrement avec Active Record
Extrait de HEY, l’équipe Rails a ajouté des attributs chiffrés à Active Record, de sorte que le framework peut offrir un chiffrement en plus de la couverture traditionnelle au repos et en transit. En tant qu'avantage pratique immédiat, le chiffrement des attributs sensibles ajoute une couche de sécurité supplémentaire. Par exemple, si un cybercriminel accède à une base de données, à un ou aux journaux de votre application, il ne sera pas en mesure de comprendre les informations chiffrées. Et même sans penser aux acteurs malveillants, la vérification des journaux d'application pour des raisons légitimes ne devrait pas non plus exposer les informations personnelles des clients.
En utilisant Active Record Encryption, il est possible de définir ce qui constitue des informations sensibles dans l’application au niveau du code. Cela permet de contrôler l'accès à ces informations et de créer des services autour d'elles. À titre d'exemple, on a les consoles Rails auditables qui protègent les données chiffrées ou vérifiez le système intégré pour filtrer automatiquement les paramètres des contrôleurs.
Chargement asynchrone des requêtes
Lorsqu’il existe une action du contrôleur qui doit charger deux requêtes non liées, il est maintenant possible le faire simultanément grâce à Relation#load_async. Si il existe trois requêtes complexes qui prennent chacune 100 ms, vous auriez dû passer 300 ms à les exécuter une par une auparavant. Maintenant, vous pouvez les exécuter en parallèle, en ne dépensant que 100 ms au total sur l'ensemble.
Zeitwerk En exclusivité
Le chargement automatique dans Rails est l'une de ces réalités magiques de qualité de vie qu'il est facile de considérer comme acquises. La bonne vieille approche const_missing, 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. Il y a quelques problèmes de mise à jour à connaître, en particulier pour les anciennes applications.
Toutes les fonctionnalités de Rails ont été implémentées afin d’offrir aux développeurs des outils à jour pour faciliter leurs projets de développement. Cette grande popularité du framework a incité dès ses débuts les ingénieurs du site de partage de fichiers Scribd pour le développement de cette plateforme.
Toutefois, en dépit de ces fonctionnalités qui font la joie de certaines personnes, un développeur du nom de Jared Friedman a déconseillé en 2015 l’utilisation de ce framework pour les nouvelles entreprises. Pour lui, ce framework a connu son heure de gloire et est maintenant sur le déclin. Il serait donc judicieux pour les nouvelles entreprises de ne pas investir dans une technologie qui est en baisse, mais plutôt de se tourner vers celles qui sont en forte progression.
Pour mieux étayer ses propos, Jared a effectué un comparatif entre les langages Ruby on Rails, Django et Node.js avec l’outil Google Trends.
À l’opposé de ce framework, Jared préconise l’utilisation de Node.js qui comme le montre Google Trends est en pleine évolution.
Source : Ruby on Rails
Et vous ?
Utilisez-vous le framework Ruby on Rails ? Sinon lequel utilisez vous ?
Quelle caractéristique de Ruby on Rails vous intéresse le plus ?
Trouvez-vous que Ruby on Rails est dépassé ?
Trouvez-vous que Node.js est un successeur valable face à ce framework ? Ou pensez-vous que ce Ruby on Rails a encore de l’avenir ?
Voir aussi :
Un développeur estime que Ruby on Rails est dépassé et conseille aux entreprises de se tourner vers Node.js, partagez-vous ce point de vue ?
La première Release Candidate de Ruby 3.0.0 est disponible avec les vérificateurs de type, y compris TypeProf et d'autres outils prenant en charge RBS
Ruby on Rails 7 révise la prise en charge de JavaScript, en abandonnant Webpacker au profit d'une approche du regroupement JavaScript sans Node.js
Ruby 3.0.0 est disponible, cette version majeure est annoncée comme étant trois fois plus rapide que Ruby 2, et introduit plusieurs nouvelles fonctionnalités dont les Ractors, RBS et TypeProf