Ruby on Rails 8.1 est désormais disponible et introduit plusieurs mises à jour concernant le déploiement, les tests et les workflows des développeurs. Parmi les nouvelles fonctionnalités, les tâches de longue durée peuvent désormais être divisées en étapes distinctes, ce qui permet de reprendre l'exécution à partir de la dernière étape terminée après un redémarrage. Cette amélioration est utile pour les déploiements utilisant Kamal, qui limite les conteneurs d'exécution des tâches à une fenêtre d'arrêt de trente secondes.Ruby on Rails (simplifié en Rails) est un framework d'applications web côté serveur écrit en Ruby sous licence MIT. Rails est un framework model–view–controller (MVC) qui fournit des structures par défaut pour une base de données, un service web et des pages web. Il encourage et facilite l'utilisation de normes web telles que JSON ou XML pour le transfert de données et HTML, CSS et JavaScript pour l'interface utilisateur. En plus du MVC, Rails met l'accent sur l'utilisation d'autres modèles et paradigmes d'ingénierie logicielle bien connus, notamment la convention plutôt que la configuration (CoC), ne vous répétez pas (DRY) et le modèle d'enregistrement actif.
Ruby on Rails 8.1 est désormais disponible et introduit plusieurs mises à jour concernant le déploiement, les tests et les workflows des développeurs. Parmi les nouvelles fonctionnalités, les tâches de longue durée peuvent désormais être divisées en étapes distinctes, ce qui permet de reprendre l'exécution à partir de la dernière étape terminée après un redémarrage. Cette amélioration est utile pour les déploiements utilisant Kamal, qui limite les conteneurs d'exécution des tâches à une fenêtre d'arrêt de trente secondes.
En parallèle, Rails 8.1 ajoute un nouveau rapporteur d'événements, qui permet une journalisation structurée des événements et améliore le post-traitement des journaux au-delà de ce qui est possible avec le journaliseur par défaut du framework, convivial pour les humains. En réponse aux améliorations de performances des machines modernes des développeurs, Rails a également introduit un langage spécifique au domaine de déclaration CI par défaut défini dans config/ci.rb et exécuté par bin/ci. Ce changement est motivé par la possibilité d'exécuter localement de grandes suites de tests en quelques minutes, éliminant ainsi le besoin de configurations d'intégration continue entièrement basées sur le cloud pour les petits projets.
Grâce à ces améliorations, les développeurs peuvent désormais rendre plus facilement les réponses Markdown directement. Kamal offre une plus grande flexibilité, car les secrets sont accessibles à partir des identifiants Rails cryptés et un registre d'images distant n'est plus nécessaire pour les déploiements de base. Des mises à jour supplémentaires permettent aux développeurs de marquer les associations Active Record comme obsolètes. Rails 8.1 apporte également d'autres améliorations et corrections de bogues.
Poursuite des tâches actives
Les tâches de longue durée peuvent désormais être divisées en étapes distinctes, ce qui permet de poursuivre l'exécution à partir de la dernière étape terminée plutôt que de recommencer depuis le début après un redémarrage. Cela est particulièrement utile lors des déploiements avec Kamal, qui ne laisse que trente secondes aux conteneurs exécutant des tâches pour s'arrêter par défaut.
| Code ruby : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | class ProcessImportJob < ApplicationJob include ActiveJob::Continuable def perform(import_id) @import = Import.find(import_id) # block format step :initialize do @import.initialize end # step with cursor, the cursor is saved when the job is interrupted step :process do |step| @import.records.find_each(start: step.cursor) do |record| record.process step.advance! from: record.id end end # method format step :finalize end private def finalize @import.finalize end end |
Rapports d'événements structurés
Le logger par défaut de Rails est idéal pour une utilisation humaine, mais moins adapté au post-traitement. Le nouveau Event Reporter fournit une interface unifiée pour produire des événements structurés dans les applications Rails :
| Code ruby : | Sélectionner tout |
Rails.event.notify("user.signup", user_id: 123, email: "user@example.com")
Il prend en charge l'ajout de balises aux événements :
| Code ruby : | Sélectionner tout |
1 2 3 4 | Rails.event.tagged("graphql") do # Event includes tags: { graphql: true } Rails.event.notify("user.signup", user_id: 123, email: "user@example.com") end |
Ainsi que le contexte :...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.