edge
Plus sur rubyonrails.org: Plus de Ruby on Rails

Notes de version de Ruby on Rails 5.2

Points forts de Rails 5.2 :

Ces notes de version ne couvrent que les changements majeurs. Pour en savoir plus sur les corrections de bugs et les modifications, veuillez consulter les journaux des modifications ou consulter la liste des commits dans le référentiel principal de Rails sur GitHub.

1 Mise à niveau vers Rails 5.2

Si vous mettez à niveau une application existante, il est conseillé d'avoir une bonne couverture de tests avant de commencer. Vous devriez également d'abord passer à Rails 5.1 au cas où vous ne l'auriez pas déjà fait et vous assurer que votre application fonctionne toujours comme prévu avant de tenter une mise à jour vers Rails 5.2. Une liste de choses à surveiller lors de la mise à niveau est disponible dans le guide Mise à niveau de Ruby on Rails.

2 Fonctionnalités majeures

2.1 Active Storage

Pull Request

Active Storage facilite le téléchargement de fichiers vers un service de stockage cloud tel que Amazon S3, Google Cloud Storage ou Microsoft Azure Storage et l'attachement de ces fichiers à des objets Active Record. Il est livré avec un service basé sur le disque local pour le développement et les tests et prend en charge la duplication des fichiers vers des services subordonnés pour les sauvegardes et les migrations. Vous pouvez en savoir plus sur Active Storage dans le guide Présentation d'Active Storage.

2.2 Redis Cache Store

Pull Request

Rails 5.2 est livré avec un Redis cache store intégré. Vous pouvez en savoir plus à ce sujet dans le guide Mise en cache avec Rails : Aperçu.

2.3 HTTP/2 Early Hints

Pull Request

Rails 5.2 prend en charge HTTP/2 Early Hints. Pour démarrer le serveur avec Early Hints activé, passez --early-hints à bin/rails server.

2.4 Credentials

Pull Request

Ajout du fichier config/credentials.yml.enc pour stocker les secrets de l'application en production. Cela permet de sauvegarder les informations d'authentification pour les services tiers directement dans le référentiel, chiffrées avec une clé présente dans le fichier config/master.key ou la variable d'environnement RAILS_MASTER_KEY. Cela remplacera éventuellement Rails.application.secrets et les secrets chiffrés introduits dans Rails 5.1. De plus, Rails 5.2 ouvre l'API sous-jacente des Credentials, vous permettant ainsi de gérer facilement d'autres configurations, clés et fichiers chiffrés. Vous pouvez en savoir plus à ce sujet dans le guide Sécurisation des applications Rails.

2.5 Politique de sécurité du contenu

Pull Request

Rails 5.2 est livré avec un nouveau DSL qui vous permet de configurer une Politique de sécurité du contenu pour votre application. Vous pouvez configurer une politique par défaut globale, puis la remplacer pour chaque ressource et même utiliser des lambdas pour injecter des valeurs par requête dans l'en-tête, telles que les sous-domaines du compte dans une application multi-locataire. Vous pouvez en savoir plus à ce sujet dans le Guide de sécurisation des applications Rails.

3 Railties

Veuillez vous référer au Changelog pour des changements détaillés.

3.1 Dépréciations

  • Déprécation de la méthode capify! dans les générateurs et les modèles. (Pull Request)

  • Le fait de passer le nom de l'environnement en tant qu'argument normal aux commandes rails dbconsole et rails console est déprécié. L'option -e doit être utilisée à la place. (Commit)

  • Déprécation de l'utilisation d'une sous-classe de Rails::Application pour démarrer le serveur Rails. (Pull Request)

  • Déprécation du rappel after_bundle dans les modèles de plugin Rails. (Pull Request)

3.2 Changements notables

  • Ajout d'une section partagée à config/database.yml qui sera chargée pour tous les environnements. (Pull Request)

  • Ajout de railtie.rb au générateur de plugin. (Pull Request)

  • Suppression des fichiers de capture d'écran dans la tâche tmp:clear. (Pull Request)

  • Ignorer les composants inutilisés lors de l'exécution de bin/rails app:update. Si la génération initiale de l'application a ignoré Action Cable, Active Record, etc., la tâche de mise à jour respecte également ces exclusions. (Pull Request)

  • Autoriser le passage d'un nom de connexion personnalisé à la commande rails dbconsole lors de l'utilisation d'une configuration de base de données à 3 niveaux. Exemple : bin/rails dbconsole -c replica. (Commit)

  • Expansion correcte des raccourcis pour le nom de l'environnement lors de l'exécution des commandes console et dbconsole. (Commit)

  • Ajout de bootsnap au Gemfile par défaut. (Pull Request)

  • Prise en charge de - comme moyen indépendant de la plateforme pour exécuter un script depuis stdin avec rails runner (Pull Request)

  • Ajout de la version ruby x.x.x au Gemfile et création du fichier racine .ruby-version contenant la version Ruby actuelle lors de la création de nouvelles applications Rails. (Pull Request)

  • Ajout de l'option --skip-action-cable au générateur de plugin. (Pull Request)

  • Ajoutez git_source à Gemfile pour le générateur de plugin. (Demande de tirage)

  • Ignorer les composants inutilisés lors de l'exécution de bin/rails dans le plugin Rails. (Commit)

  • Optimisez l'indentation des actions du générateur. (Demande de tirage)

  • Optimisez l'indentation des routes. (Demande de tirage)

  • Ajoutez l'option --skip-yarn au générateur de plugin. (Demande de tirage)

  • Prend en charge plusieurs arguments de versions pour la méthode gem des générateurs. (Demande de tirage)

  • Dérivez secret_key_base du nom de l'application dans les environnements de développement et de test. (Demande de tirage)

  • Ajoutez mini_magick au Gemfile par défaut en tant que commentaire. (Demande de tirage)

  • rails new et rails plugin new obtiennent Active Storage par défaut. Ajoutez la possibilité de sauter Active Storage avec --skip-active-storage et faites-le automatiquement lorsque --skip-active-record est utilisé. (Demande de tirage)

4 Action Cable

Veuillez vous référer au journal des modifications pour des changements détaillés.

4.1 Suppressions

  • Suppression de l'adaptateur Redis événementiel obsolète. (Commit)

4.2 Changements notables

  • Ajout de la prise en charge des options host, port, db et password dans cable.yml (Demande de tirage)

  • Hachage des identifiants de flux longs lors de l'utilisation de l'adaptateur PostgreSQL. (Demande de tirage)

5 Action Pack

Veuillez vous référer au journal des modifications pour des changements détaillés.

5.1 Suppressions

  • Suppression de ActionController::ParamsParser::ParseError obsolète. (Commit)

5.2 Dépréciations

  • Dépréciation des alias #success?, #missing? et #error? de ActionDispatch::TestResponse. (Demande de tirage)

5.3 Changements notables

  • Ajout de la prise en charge des clés de cache recyclables avec le fragment caching. (Demande de tirage)

  • Modification du format de clé de cache pour les fragments pour faciliter le débogage des clés (Demande de tirage)

  • Cookies et sessions chiffrés AEAD avec GCM. (Demande de tirage)

  • Protection contre la falsification par défaut. (Demande de tirage)

  • Expiration des cookies et sessions signés/chiffrés côté serveur. (Demande de tirage)

  • L'option :expires des cookies prend en charge l'objet ActiveSupport::Duration. (Demande de tirage)

  • Utilisation de la configuration du serveur :puma enregistré par Capybara. (Demande de tirage)

  • Simplification du middleware des cookies avec prise en charge de la rotation des clés. (Demande de tirage)

  • Ajout de la possibilité d'activer les Early Hints pour HTTP/2. (Demande de tirage)

  • Ajout de la prise en charge de Chrome sans interface pour les tests système. (Demande de tirage)

  • Ajout de l'option :allow_other_host à la méthode redirect_back. (Demande de tirage)

  • Faites en sorte que assert_recognizes traverse les moteurs montés. (Demande d'extraction)

  • Ajoutez DSL pour configurer l'en-tête Content-Security-Policy. (Demande d'extraction, Commit, Commit)

  • Enregistrez les types MIME audio/vidéo/police les plus populaires pris en charge par les navigateurs modernes. (Demande d'extraction)

  • Modifiez la sortie par défaut de capture d'écran des tests système de inline à simple. (Commit)

  • Ajoutez la prise en charge de Firefox sans interface graphique aux tests système. (Demande d'extraction)

  • Ajoutez les en-têtes sécurisées X-Download-Options et X-Permitted-Cross-Domain-Policies à l'ensemble des en-têtes par défaut. (Commit)

  • Modifiez les tests système pour définir Puma comme serveur par défaut uniquement lorsque l'utilisateur n'a pas spécifié manuellement un autre serveur. (Demande d'extraction)

  • Ajoutez l'en-tête Referrer-Policy à l'ensemble des en-têtes par défaut. (Commit)

  • Correspond au comportement de Hash#each dans ActionController::Parameters#each. (Demande d'extraction)

  • Ajoutez la prise en charge de la génération automatique de nonce pour Rails UJS. (Commit)

  • Mettez à jour la valeur par défaut de max-age de HSTS à 31536000 secondes (1 an) pour répondre à l'exigence de max-age minimale pour https://hstspreload.org/. (Commit)

  • Ajoutez la méthode d'alias to_hash à to_h pour cookies. Ajoutez la méthode d'alias to_h à to_hash pour session. (Commit)

6 Action View

Veuillez vous référer au journal des modifications pour des changements détaillés.

6.1 Suppressions

  • Supprimez le gestionnaire ERB Erubis obsolète. (Commit)

6.2 Obsolescence

  • Obsolete l'aide image_alt qui ajoutait un texte alt par défaut aux images générées par image_tag. (Demande d'extraction)

6.3 Changements notables

7 Action Mailer

Veuillez vous référer au journal des modifications pour des changements détaillés.

7.1 Changements notables

8 Active Record

Veuillez vous référer au Changelog pour obtenir des informations détaillées sur les modifications.

8.1 Suppressions

  • Suppression de #migration_keys obsolète. (Pull Request)

  • Suppression du support obsolète de quoted_id lors de la conversion de type d'un objet Active Record. (Commit)

  • Suppression de l'argument obsolète default de index_name_exists?. (Commit)

  • Suppression du support obsolète de la classe passée à :class_name dans les associations. (Commit)

  • Suppression des méthodes obsolètes initialize_schema_migrations_table et initialize_internal_metadata_table. (Commit)

  • Suppression de la méthode obsolète supports_migrations?. (Commit)

  • Suppression de la méthode obsolète supports_primary_key?. (Commit)

  • Suppression de la méthode obsolète ActiveRecord::Migrator.schema_migrations_table_name. (Commit)

  • Suppression de l'argument obsolète name de #indexes. (Commit)

  • Suppression des arguments obsolètes de #verify!. (Commit)

  • Suppression de la configuration obsolète .error_on_ignored_order_or_limit. (Commit)

  • Suppression de la méthode obsolète #scope_chain. (Commit)

  • Suppression de la méthode obsolète #sanitize_conditions. (Commit)

8.2 Dépréciations

  • Dépréciation de supports_statement_cache?. (Pull Request)

  • Dépréciation de la possibilité de passer des arguments et un bloc en même temps à count et sum dans ActiveRecord::Calculations. (Pull Request)

  • Dépréciation de la délégation à arel dans Relation. (Pull Request)

  • Dépréciation de la méthode set_state dans TransactionState. (Commit)

  • Dépréciation de expand_hash_conditions_for_aggregates sans remplacement. (Commit)

8.3 Changements notables

  • Lors de l'appel de la méthode d'accès dynamique aux fixtures sans arguments, elle renvoie maintenant toutes les fixtures de ce type. Auparavant, cette méthode renvoyait toujours un tableau vide. (Pull Request)

  • Correction de l'incohérence avec les attributs modifiés lors de la substitution du lecteur d'attributs Active Record. (Pull Request)

  • Prise en charge des index décroissants pour MySQL. (Pull Request)

  • Correction de la première migration de bin/rails db:forward. (Commit)

  • L'erreur UnknownMigrationVersionError est maintenant levée lors du déplacement des migrations lorsque la migration actuelle n'existe pas. (Commit)

  • Respect de SchemaDumper.ignore_tables dans les tâches rake pour la sauvegarde de la structure des bases de données. (Pull Request)

  • Ajout de ActiveRecord::Base#cache_version pour prendre en charge les clés de cache réutilisables via les nouvelles entrées versionnées dans ActiveSupport::Cache. Cela signifie également que ActiveRecord::Base#cache_key renverra maintenant une clé stable qui n'inclut plus de timestamp. (Pull Request)

  • Empêcher la création d'un paramètre de liaison si la valeur convertie est nulle. (Pull Request)

  • Utilisation de l'INSERT groupé pour insérer les fixtures pour de meilleures performances. (Pull Request)

  • Fusionner deux relations représentant des jointures imbriquées ne transforme plus les jointures de la relation fusionnée en LEFT OUTER JOIN. (Demande de tirage)

  • Corriger les transactions pour appliquer l'état aux transactions enfants. Auparavant, si vous aviez une transaction imbriquée et que la transaction externe était annulée, l'enregistrement de la transaction interne était toujours marqué comme persistant. Cela a été corrigé en appliquant l'état de la transaction parent à la transaction enfant lorsque la transaction parent est annulée. Cela marquera correctement les enregistrements de la transaction interne comme non persistants. (Commit)

  • Corriger le chargement précoce/préchargement de l'association avec une portée incluant des jointures. (Demande de tirage)

  • Empêcher les erreurs générées par les abonnés aux notifications sql.active_record d'être converties en exceptions ActiveRecord::StatementInvalid. (Demande de tirage)

  • Ignorer la mise en cache des requêtes lors de l'utilisation de lots d'enregistrements (find_each, find_in_batches, in_batches). (Commit)

  • Modifier la sérialisation des booléens sqlite3 pour utiliser 1 et 0. SQLite reconnaît nativement 1 et 0 comme vrai et faux, mais ne reconnaît pas nativement 't' et 'f' comme cela était précédemment sérialisé. (Demande de tirage)

  • Les valeurs construites à l'aide d'une affectation multi-paramètres utiliseront désormais la valeur post-type-cast pour le rendu dans les champs de formulaire à champ unique. (Commit)

  • ApplicationRecord n'est plus généré lors de la génération de modèles. Si vous avez besoin de le générer, vous pouvez le créer avec rails g application_record. (Demande de tirage)

  • Relation#or accepte maintenant deux relations qui ont des valeurs différentes pour references seulement, car references peut être implicitement appelé par where. (Commit)

  • Lors de l'utilisation de Relation#or, extraire les conditions communes et les placer avant la condition OR. (Demande de tirage)

  • Ajouter la méthode d'aide binary pour les fixtures. (Demande de tirage)

  • Deviner automatiquement les associations inverses pour STI. (Demande de tirage)

  • Ajouter une nouvelle classe d'erreur LockWaitTimeout qui sera levée lorsque le délai d'attente du verrou est dépassé. (Demande de tirage)

  • Mettre à jour les noms de charge utile pour l'instrumentation sql.active_record pour être plus descriptifs. (Demande de tirage)

  • Utiliser l'algorithme donné lors de la suppression d'un index de la base de données. (Demande de tirage)

  • Passer un Set à Relation#where se comporte maintenant de la même manière que passer un tableau. (Commit)

  • PostgreSQL tsrange préserve désormais la précision des sous-secondes. (Pull Request)

  • Une erreur est levée lors de l'appel à lock! sur un enregistrement modifié. (Commit)

  • Correction d'un bug où les ordres de colonnes pour un index n'étaient pas écrits dans db/schema.rb lors de l'utilisation de l'adaptateur SQLite. (Pull Request)

  • Correction de bin/rails db:migrate avec VERSION spécifié. bin/rails db:migrate avec VERSION vide se comporte comme sans VERSION. Vérifiez le format de VERSION : autorise un numéro de version de migration ou le nom d'un fichier de migration. Une erreur est levée si le format de VERSION est invalide. Une erreur est levée si la migration cible n'existe pas. (Pull Request)

  • Ajout d'une nouvelle classe d'erreur StatementTimeout qui sera levée lorsque le délai d'exécution de la requête est dépassé. (Pull Request)

  • update_all transmet maintenant ses valeurs à Type#cast avant de les transmettre à Type#serialize. Cela signifie que update_all(foo: 'true') persiste correctement un booléen. (Commit)

  • Les fragments SQL bruts doivent être explicitement marqués lorsqu'ils sont utilisés dans les méthodes de requête de relation. (Commit, Commit)

  • Ajout de #up_only aux migrations de base de données pour le code qui n'est pertinent que lors de la migration ascendante, par exemple, la population d'une nouvelle colonne. (Pull Request)

  • Ajout d'une nouvelle classe d'erreur QueryCanceled qui sera levée lors de l'annulation de la requête suite à une demande de l'utilisateur. (Pull Request)

  • Les scopes ne peuvent pas être définis en conflit avec les méthodes d'instance sur Relation. (Pull Request)

  • Ajout de la prise en charge des classes d'opérateurs PostgreSQL à add_index. (Pull Request)

  • Enregistrement des appelants des requêtes de base de données. (Pull Request, Pull Request, Pull Request)

  • Annulation des méthodes d'attribut sur les descendants lors de la réinitialisation des informations de colonne. (Pull Request)

  • Utilisation d'un sous-sélecteur pour delete_all avec limit ou offset. (Commit)

  • Correction d'une incohérence avec first(n) lorsqu'il est utilisé avec limit(). Le chercheur first(n) respecte désormais limit(), ce qui le rend cohérent avec relation.to_a.first(n), et également avec le comportement de last(n). (Pull Request)

  • Correction des associations has_many :through imbriquées sur des instances parent non persistées. (Commit)

  • Prendre en compte les conditions d'association lors de la suppression à travers les enregistrements. (Commit)

  • Ne pas autoriser la mutation de l'objet détruit après l'appel à save ou save!. (Commit)

  • Résoudre le problème de fusion de relation avec left_outer_joins. (Pull Request)

  • Support des tables étrangères PostgreSQL. (Pull Request)

  • Réinitialiser l'état de la transaction lorsqu'un objet Active Record est dupliqué. (Pull Request)

  • Résoudre le problème de non-expansion lors du passage d'un objet Array en argument à la méthode where en utilisant une colonne composed_of. (Pull Request)

  • Faire en sorte que reflection.klass lève une exception si polymorphic? n'est pas utilisé correctement. (Commit)

  • Résoudre #columns_for_distinct de MySQL et PostgreSQL pour que ActiveRecord::FinderMethods#limited_ids_for utilise les valeurs de clé primaire correctes même si les colonnes ORDER BY incluent la clé primaire d'une autre table. (Commit)

  • Résoudre le problème de dependent: :destroy pour la relation has_one/belongs_to où la classe parent était supprimée lorsque l'enfant ne l'était pas. (Commit)

  • Les connexions inactives de la base de données (précédemment uniquement les connexions orphelines) sont maintenant périodiquement supprimées par le récupérateur du pool de connexions. (Commit)

9 Active Model

Veuillez vous référer au journal des modifications pour des changements détaillés.

9.1 Changements notables

  • Résoudre les méthodes #keys, #values dans ActiveModel::Errors. Modifier #keys pour ne renvoyer que les clés qui n'ont pas de messages vides. Modifier #values pour ne renvoyer que les valeurs non vides. (Pull Request)

  • Ajouter la méthode #merge! pour ActiveModel::Errors. (Pull Request)

  • Autoriser le passage d'un Proc ou d'un symbole aux options du validateur de longueur. (Pull Request)

  • Exécuter la validation de ConfirmationValidator lorsque la valeur de _confirmation est false. (Pull Request)

  • Les modèles utilisant l'API des attributs avec une valeur par défaut de type proc peuvent maintenant être sérialisés. (Commit)

  • Ne pas perdre toutes les multiples :includes avec des options lors de la sérialisation. (Commit)

10 Active Support

Veuillez vous référer au journal des modifications pour des changements détaillés.

10.1 Suppressions

  • Supprimer le filtre de chaîne :if et :unless déprécié pour les rappels. (Commit)

  • Supprimer l'option dépréciée halt_callback_chains_on_return_false. (Commit)

10.2 Dépréciations

  • Déprécier la méthode Module#reachable?. (Pull Request)

  • Déprécier secrets.secret_token. (Commit)

10.3 Changements notables

  • Ajouter fetch_values pour HashWithIndifferentAccess. (Pull Request)

  • Ajouter la prise en charge de :offset à Time#change. (Commit)

  • Ajouter la prise en charge de :offset et :zone à ActiveSupport::TimeWithZone#change. (Commit)

  • Transmettre le nom du gem et l'horizon de dépréciation aux notifications de dépréciation. (Pull Request)

  • Ajouter la prise en charge des entrées de cache versionnées. Cela permet aux magasins de cache de recycler les clés de cache, ce qui permet de réaliser d'importantes économies de stockage dans les cas de changement fréquent. Fonctionne en conjonction avec la séparation de #cache_key et #cache_version dans Active Record et son utilisation dans le fragment caching d'Action Pack. (Pull Request)

  • Ajouter ActiveSupport::CurrentAttributes pour fournir un singleton d'attributs isolé par thread. Le cas d'utilisation principal est de rendre tous les attributs par requête facilement disponibles pour l'ensemble du système. (Pull Request)

  • #singularize et #pluralize respectent maintenant les mots non dénombrables pour la locale spécifiée. (Commit)

  • Ajouter l'option par défaut à class_attribute. (Pull Request)

  • Ajouter Date#prev_occurring et Date#next_occurring pour retourner le jour de la semaine précédent/suivant spécifié. (Pull Request)

  • Ajouter l'option par défaut aux accesseurs d'attributs de module et de classe. (Pull Request)

  • Cache : write_multi. (Pull Request)

  • Par défaut, ActiveSupport::MessageEncryptor utilise le chiffrement AES 256 GCM. (Pull Request)

  • Ajouter l'aide freeze_time qui fige l'heure à Time.now dans les tests. (Pull Request)

  • Rendre l'ordre de Hash#reverse_merge! cohérent avec HashWithIndifferentAccess. (Pull Request)

  • Ajouter la prise en charge de l'objectif et de l'expiration à ActiveSupport::MessageVerifier et ActiveSupport::MessageEncryptor. (Pull Request)

  • Mettre à jour String#camelize pour fournir un retour lorsque l'option incorrecte est passée. (Pull Request)

  • Module#delegate_missing_to lève maintenant une DelegationError si la cible est nulle, similaire à Module#delegate. (Pull Request)

  • Ajouter ActiveSupport::EncryptedFile et ActiveSupport::EncryptedConfiguration. (Pull Request)

  • Ajouter config/credentials.yml.enc pour stocker les secrets de l'application en production. (Pull Request)

  • Ajouter la prise en charge de la rotation des clés à MessageEncryptor et MessageVerifier. (Pull Request)

  • Renvoyer une instance de HashWithIndifferentAccess à partir de HashWithIndifferentAccess#transform_keys. (Pull Request)

  • Hash#slice utilise maintenant la définition intégrée de Ruby 2.5+ si elle est définie. (Commit)

  • IO#to_json renvoie maintenant la représentation to_s, plutôt que d'essayer de convertir en un tableau. Cela corrige un bogue où IO#to_json lèverait une IOError lorsqu'il est appelé sur un objet non lisible. (Pull Request)

  • Ajouter la même signature de méthode pour Time#prev_day et Time#next_day conformément à Date#prev_day et Date#next_day. Permet de passer un argument pour Time#prev_day et Time#next_day. (Commit)

  • Ajouter la même signature de méthode pour Time#prev_month et Time#next_month conformément à Date#prev_month et Date#next_month. Permet de passer un argument pour Time#prev_month et Time#next_month. (Commit)

  • Ajouter la même signature de méthode pour Time#prev_year et Time#next_year conformément à Date#prev_year et Date#next_year. Permet de passer un argument pour Time#prev_year et Time#next_year. (Commit)

  • Corriger la prise en charge des acronymes dans humanize. (Commit)

  • Autoriser Range#include? sur les plages TWZ. (Pull Request)

  • Cache : Activer la compression par défaut pour les valeurs supérieures à 1 ko. (Pull Request)

  • Redis cache store. (Pull Request, Pull Request)

  • Gérer les erreurs TZInfo::AmbiguousTime. (Pull Request)

  • MemCacheStore : Prise en charge de l'expiration des compteurs. (Commit)

  • Faire en sorte que ActiveSupport::TimeZone.all ne renvoie que les fuseaux horaires présents dans ActiveSupport::TimeZone::MAPPING. (Pull Request)

  • Modifier le comportement par défaut de ActiveSupport::SecurityUtils.secure_compare pour ne pas divulguer les informations de longueur même pour les chaînes de longueur variable. Renommer l'ancienne méthode ActiveSupport::SecurityUtils.secure_compare en fixed_length_secure_compare et commencer à lever une ArgumentError en cas de différence de longueur entre les chaînes passées. (Pull Request)

  • Utiliser SHA-1 pour générer des hachages non sensibles, tels que l'en-tête ETag. (Pull Request, Pull Request)

  • assert_changes vérifiera toujours que l'expression change, indépendamment des combinaisons d'arguments from: et to:. (Pull Request)

  • Ajouter l'instrumentation manquante pour read_multi dans ActiveSupport::Cache::Store. (Pull Request)

  • Prise en charge d'un hachage en tant que premier argument dans assert_difference. Cela permet de spécifier plusieurs différences numériques dans la même assertion. (Pull Request)

  • Caching : Accélérer read_multi et fetch_multi pour MemCache et Redis. Lire dans le cache local en mémoire avant de consulter le backend. (Commit)

11 Active Job

Veuillez vous référer au journal des modifications pour des détails sur les changements.

11.1 Changements notables

  • Autoriser le passage d'un bloc à ActiveJob::Base.discard_on pour permettre une gestion personnalisée des jobs à supprimer. (Pull Request)

12 Ruby on Rails Guides

Veuillez vous référer au journal des modifications pour des détails sur les changements.

12.1 Changements notables

13 Crédits

Consultez la liste complète des contributeurs à Rails pour les nombreuses personnes qui ont passé de nombreuses heures à faire de Rails, le framework stable et robuste qu'il est. Bravo à tous.

Retour d'information

Vous êtes encouragé à contribuer à l'amélioration de la qualité de ce guide.

Veuillez contribuer si vous trouvez des fautes de frappe ou des erreurs factuelles. Pour commencer, vous pouvez lire notre contribution à la documentation section.

Vous pouvez également trouver du contenu incomplet ou des informations qui ne sont pas à jour. Veuillez ajouter toute documentation manquante pour la version principale. Assurez-vous de vérifier Edge Guides d'abord pour vérifier si les problèmes ont déjà été résolus ou non sur la branche principale. Consultez les Directives des guides Ruby on Rails pour le style et les conventions.

Si pour une raison quelconque vous repérez quelque chose à corriger mais ne pouvez pas le faire vous-même, veuillez ouvrir un problème.

Et enfin, toute discussion concernant la documentation de Ruby on Rails est la bienvenue sur le Forum officiel de Ruby on Rails.