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

Ruby on Rails 6.0 Notes de version

Points forts de Rails 6.0 :

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

1 Mise à niveau vers Rails 6.0

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.2 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 6.0. 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 Action Mailbox

Pull Request

Action Mailbox vous permet de router les e-mails entrants vers des boîtes aux lettres similaires à des contrôleurs. Vous pouvez en savoir plus sur Action Mailbox dans le guide Action Mailbox Basics.

2.2 Action Text

Pull Request

Action Text apporte du contenu et de l'édition de texte enrichi à Rails. Il inclut l'éditeur Trix qui gère tout, de la mise en forme aux liens en passant par les citations, les listes, les images intégrées et les galeries. Le contenu texte enrichi généré par l'éditeur Trix est enregistré dans son propre modèle RichText qui est associé à n'importe quel modèle Active Record existant dans l'application. Toutes les images intégrées (ou autres pièces jointes) sont automatiquement stockées à l'aide d'Active Storage et associées au modèle RichText inclus.

Vous pouvez en savoir plus sur Action Text dans le guide Action Text Overview.

2.3 Tests parallèles

Pull Request

Les tests parallèles vous permettent de paralléliser votre suite de tests. Bien que la création de processus soit la méthode par défaut, le threading est également pris en charge. L'exécution de tests en parallèle réduit le temps nécessaire pour exécuter l'ensemble de votre suite de tests.

2.4 Tests Action Cable

Pull Request

Les outils de test Action Cable vous permettent de tester votre fonctionnalité Action Cable à n'importe quel niveau : connexions, canaux, diffusions.

3 Railties

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

3.1 Suppressions

  • Supprimer l'aide after_bundle obsolète à l'intérieur des modèles de plugins. (Commit)

  • Supprimer le support obsolète de config.ru qui utilise la classe d'application comme argument de run. (Commit)

  • Supprimer l'argument obsolète environment des commandes Rails. (Commit)

  • Supprimer la méthode obsolète capify! dans les générateurs et les modèles. (Commit)

  • Supprimer config.secret_token obsolète. (Commit)

3.2 Dépréciations

  • Déprécier le passage du nom du serveur Rack en tant qu'argument normal à rails server. (Pull Request)

  • Déprécier la prise en charge de l'utilisation de l'environnement HOST pour spécifier l'adresse IP du serveur. (Pull Request)

  • Déprécier l'accès aux hachages retournés par config_for avec des clés non symboliques. (Pull Request)

3.3 Changements notables

  • Ajouter une option explicite --using ou -u pour spécifier le serveur pour la commande rails server. (Pull Request)

  • Ajouter la possibilité de voir la sortie de rails routes au format étendu. (Pull Request)

  • Exécuter la tâche de base de données de seed en utilisant l'adaptateur Active Job en ligne. (Pull Request)

  • Ajouter une commande rails db:system:change pour changer la base de données de l'application. (Pull Request)

  • Ajouter la commande rails test:channels pour tester uniquement les canaux Action Cable. (Pull Request)

  • Introduire une protection contre les attaques de rebinding DNS. (Demande de tirage)

  • Ajouter la possibilité d'annuler en cas d'échec lors de l'exécution des commandes de génération. (Demande de tirage)

  • Faire de Webpacker le compilateur JavaScript par défaut pour Rails 6. (Demande de tirage)

  • Ajouter la prise en charge de plusieurs bases de données pour la commande rails db:migrate:status. (Demande de tirage)

  • Ajouter la possibilité d'utiliser des chemins de migration différents à partir de plusieurs bases de données dans les générateurs. (Demande de tirage)

  • Ajouter la prise en charge des informations d'identification multi-environnement. (Demande de tirage)

  • Définir null_store comme cache store par défaut dans l'environnement de test. (Demande de tirage)

4 Action Cable

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

4.1 Suppressions

  • Remplacer ActionCable.startDebugging() et ActionCable.stopDebugging() par ActionCable.logger.enabled. (Demande de tirage)

4.2 Dépréciations

  • Il n'y a pas de dépréciations pour Action Cable dans Rails 6.0.

4.3 Changements notables

  • Ajouter la prise en charge de l'option channel_prefix pour les adaptateurs de souscription PostgreSQL dans cable.yml. (Demande de tirage)

  • Autoriser la transmission d'une configuration personnalisée à ActionCable::Server::Base. (Demande de tirage)

  • Ajouter les hooks de chargement :action_cable_connection et :action_cable_channel. (Demande de tirage)

  • Ajouter Channel::Base#broadcast_to et Channel::Base.broadcasting_for. (Demande de tirage)

  • Fermer une connexion lors de l'appel de reject_unauthorized_connection à partir d'une ActionCable::Connection. (Demande de tirage)

  • Convertir le package JavaScript Action Cable de CoffeeScript à ES2015 et publier le code source dans la distribution npm. (Demande de tirage)

  • Déplacer la configuration de l'adaptateur WebSocket et de l'adaptateur de journalisation des propriétés de ActionCable vers ActionCable.adapters. (Demande de tirage)

  • Ajouter une option id à l'adaptateur Redis pour distinguer les connexions Redis d'Action Cable. (Demande de tirage)

5 Action Pack

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

5.1 Suppressions

  • Supprimer l'aide fragment_cache_key obsolète au profit de combined_fragment_cache_key. (Commit)

  • Supprimer les méthodes obsolètes dans ActionDispatch::TestResponse : #success? au profit de #successful?, #missing? au profit de #not_found?, #error? au profit de #server_error?. (Commit)

5.2 Dépréciations

  • Déprécier ActionDispatch::Http::ParameterFilter au profit de ActiveSupport::ParameterFilter. (Demande de tirage)

  • Déprécier force_ssl au niveau du contrôleur au profit de config.force_ssl. (Demande de tirage)

5.3 Changements notables

  • Modifier ActionDispatch::Response#content_type pour renvoyer le Content-Type de l'en-tête tel quel. (Demande de tirage)

  • Lever une ArgumentError si un paramètre de ressource contient un deux-points. (Demande de tirage)

  • Autoriser l'appel de ActionDispatch::SystemTestCase.driven_by avec un bloc pour définir des capacités spécifiques du navigateur. (Demande de tirage)

  • Ajouter le middleware ActionDispatch::HostAuthorization qui protège contre les attaques de rebinding DNS. (Demande de tirage)

  • Autoriser l'utilisation de parsed_body dans ActionController::TestCase. (Demande de tirage)

  • Lever une ArgumentError lorsqu'il existe plusieurs routes racines dans le même contexte sans spécifications de nom as:. (Demande de tirage)

  • Autoriser l'utilisation de #rescue_from pour gérer les erreurs d'analyse des paramètres. (Demande de tirage)

  • Ajouter ActionController::Parameters#each_value pour itérer à travers les paramètres. (Demande de tirage)

  • Encoder les noms de fichiers Content-Disposition sur send_data et send_file. (Demande de tirage)

  • Exposer ActionController::Parameters#each_key. (Demande de tirage)

  • Ajouter des métadonnées de but et d'expiration à l'intérieur des cookies signés/chiffrés pour empêcher la copie de la valeur des cookies dans d'autres. (Demande de tirage)

  • Lever ActionController::RespondToMismatchError pour les invocations respond_to conflictuelles. (Demande de tirage)

  • Ajouter une page d'erreur explicite lorsque le modèle d'une demande est manquant pour un format donné. (Demande de tirage)

  • Introduire ActionDispatch::DebugExceptions.register_interceptor, une façon de se brancher sur DebugExceptions et de traiter l'exception avant son rendu. (Demande de tirage)

  • Ne produire qu'une seule valeur d'en-tête Content-Security-Policy nonce par demande. (Demande de tirage)

  • Ajouter un module spécifiquement pour la configuration par défaut des en-têtes Rails qui peut être inclus explicitement dans les contrôleurs. (Demande de tirage)

  • Ajoutez #dig à ActionDispatch::Request::Session. (Pull Request)

6 Action View

Veuillez vous référer au [Changelog][action-view] pour des changements détaillés.

6.1 Suppressions

  • Supprimez l'aide image_alt obsolète. (Commit)

  • Supprimez un module RecordTagHelper vide dont la fonctionnalité a déjà été déplacée vers la gemme record_tag_helper. (Commit)

6.2 Dépréciations

  • Dépréciez ActionView::Template.finalize_compiled_template_methods sans remplacement. (Pull Request)

  • Dépréciez config.action_view.finalize_compiled_template_methods sans remplacement. (Pull Request)

  • Dépréciez l'appel de méthodes de modèle privées depuis l'aide de vue options_from_collection_for_select. (Pull Request)

6.3 Changements notables

  • Effacez le cache d'Action View uniquement en cas de modifications de fichiers, accélérant le mode de développement. (Pull Request)

  • Déplacez tous les packages npm de Rails dans une portée @rails. (Pull Request)

  • N'acceptez que les formats des types MIME enregistrés. (Pull Request, Pull Request)

  • Ajoutez des allocations à la sortie du serveur pour le rendu des modèles et des partiels. (Pull Request)

  • Ajoutez une option year_format à la balise date_select, permettant de personnaliser les noms des années. (Pull Request)

  • Ajoutez une option nonce: true pour l'aide javascript_include_tag afin de prendre en charge la génération automatique de nonce pour une politique de sécurité du contenu. (Pull Request)

  • Ajoutez une configuration action_view.finalize_compiled_template_methods pour désactiver ou activer les finaliseurs de ActionView::Template. (Pull Request)

  • Extrayez l'appel JavaScript confirm dans sa propre méthode pouvant être surchargée dans rails_ujs. (Pull Request)

  • Ajoutez une option de configuration action_controller.default_enforce_utf8 pour gérer l'encodage UTF-8. Par défaut, cette option est à false. (Pull Request)

  • Ajoutez la prise en charge du style de clé I18n pour les clés de locale dans les balises de soumission. (Pull Request)

7 Action Mailer

Veuillez vous référer au [Changelog][action-mailer] pour des changements détaillés.

7.1 Suppressions

7.2 Dépréciations

  • Dépréciez ActionMailer::Base.receive en faveur d'Action Mailbox. (Commit)

  • Dépréciez DeliveryJob et Parameterized::DeliveryJob en faveur de MailDeliveryJob. (Pull Request)

7.3 Changements notables

  • Ajoutez MailDeliveryJob pour envoyer des e-mails réguliers et paramétrés. (Pull Request)

  • Permettez aux emplois d'envoi d'e-mails personnalisés de fonctionner avec les assertions de test d'Action Mailer. (Pull Request)

  • Permettez de spécifier un nom de modèle pour les e-mails multipart avec des blocs au lieu de n'utiliser que le nom de l'action. (Pull Request)

  • Ajoutez perform_deliveries à la charge utile de la notification deliver.action_mailer. (Pull Request)

  • Améliorez le message de journalisation lorsque perform_deliveries est faux pour indiquer que l'envoi des e-mails a été ignoré. (Pull Request)

  • Permettez d'appeler assert_enqueued_email_with sans bloc. (Pull Request)

  • Effectuez les emplois d'envoi d'e-mails en file d'attente dans le bloc assert_emails. (Pull Request)

  • Permettez à ActionMailer::Base de désenregistrer les observateurs et intercepteurs. (Pull Request)

8 Active Record

Veuillez vous référer au [Changelog][active-record] pour des changements détaillés.

8.1 Suppressions

  • Supprimez #set_state obsolète de l'objet de transaction. (Commit)

  • Supprimez #supports_statement_cache? obsolète des adaptateurs de base de données. (Commit)

  • Supprimez #insert_fixtures obsolète des adaptateurs de base de données. (Commit)

  • Supprimez ActiveRecord::ConnectionAdapters::SQLite3Adapter#valid_alter_table_type? obsolète. (Commit)

  • Supprimez la prise en charge de la spécification du nom de colonne pour #cache_key. (Commit)

  • Supprimez ActiveRecord::Migrator.migrations_path=. (Commit)

  • Supprimer expand_hash_conditions_for_aggregates obsolète. (Commit)

8.2 Obsolescence

  • Obsolescence des comparaisons de collation avec sensibilité à la casse pour le validateur d'unicité. (Commit)

  • Obsolescence de l'utilisation des méthodes de requête de niveau de classe si la portée du récepteur a fuité. (Pull Request)

  • Obsolescence de config.active_record.sqlite3.represent_boolean_as_integer. (Commit)

  • Obsolescence du passage de migrations_paths à connection.assume_migrated_upto_version. (Commit)

  • Obsolescence de ActiveRecord::Result#to_hash au profit de ActiveRecord::Result#to_a. (Commit)

  • Obsolescence des méthodes dans DatabaseLimits: column_name_length, table_name_length, columns_per_table, indexes_per_table, columns_per_multicolumn_index, sql_query_length, et joins_per_query. (Commit)

  • Obsolescence de update_attributes/! au profit de update/!. (Commit)

8.3 Changements notables

  • Augmentation de la version minimale de la gemme sqlite3 à 1.4. (Pull Request)

  • Ajout de rails db:prepare pour créer une base de données si elle n'existe pas, et exécuter ses migrations. (Pull Request)

  • Ajout du rappel after_save_commit comme raccourci pour after_commit :hook, on: [ :create, :update ]. (Pull Request)

  • Ajout de ActiveRecord::Relation#extract_associated pour extraire les enregistrements associés d'une relation. (Pull Request)

  • Ajout de ActiveRecord::Relation#annotate pour ajouter des commentaires SQL aux requêtes d'ActiveRecord::Relation. (Pull Request)

  • Ajout de la prise en charge de l'ajout d'indices d'optimisation sur les bases de données. (Pull Request)

  • Ajout des méthodes insert_all/insert_all!/upsert_all pour effectuer des insertions en bloc. (Pull Request)

  • Ajout de rails db:seed:replant qui tronque les tables de chaque base de données pour l'environnement actuel et charge les données de départ. (Pull Request)

  • Ajout de la méthode reselect, qui est un raccourci pour unscope(:select).select(fields). (Pull Request)

  • Ajout de scopes négatifs pour toutes les valeurs d'énumération. (Pull Request)

  • Ajout de #destroy_by et #delete_by pour les suppressions conditionnelles. (Pull Request)

  • Ajout de la possibilité de basculer automatiquement entre les connexions de base de données. (Pull Request)

  • Ajout de la possibilité d'empêcher l'écriture dans une base de données pendant la durée d'un bloc. (Pull Request)

  • Ajout d'une API pour basculer les connexions afin de prendre en charge plusieurs bases de données. (Pull Request)

  • Les horodatages avec précision deviennent la valeur par défaut pour les migrations. (Pull Request)

  • Prise en charge de l'option :size pour modifier la taille du texte et du blob dans MySQL. (Pull Request)

  • Définir à NULL à la fois la clé étrangère et les colonnes de type étranger pour les associations polymorphes avec la stratégie dependent: :nullify. (Pull Request)

  • Autoriser une instance autorisée de ActionController::Parameters à être passée en argument à ActiveRecord::Relation#exists?. (Pull Request)

  • Prise en charge de #where pour les plages infinies introduites dans Ruby 2.6. (Pull Request)

  • Faire de ROW_FORMAT=DYNAMIC une option de création de table par défaut pour MySQL. (Pull Request)

  • Ajout de l'option :if_not_exists à create_table. (Pull Request)

  • Ajout de la prise en charge de plusieurs bases de données à rails db:schema:cache:dump et rails db:schema:cache:clear. (Pull Request)

  • Ajout de la prise en charge des configurations de hachage et d'URL dans le hachage de base de données de ActiveRecord::Base.connected_to. (Pull Request)

  • Ajout de la prise en charge des expressions par défaut et des index d'expression pour MySQL. (Pull Request)

  • Ajout d'une option index pour les helpers de migration change_table. (Pull Request)

  • Correction de la réversion de transaction pour les migrations. Auparavant, les commandes à l'intérieur d'une transaction dans une migration révoquée s'exécutaient sans être inversées. Ce changement corrige cela. (Pull Request)

  • Autoriser la configuration de ActiveRecord::Base.configurations= avec un hash symbolisé. (Demande de tirage)

  • Corriger le cache de compteur pour ne mettre à jour que si l'enregistrement est réellement enregistré. (Demande de tirage)

  • Ajouter la prise en charge des index d'expression pour l'adaptateur SQLite. (Demande de tirage)

  • Permettre aux sous-classes de redéfinir les rappels autosave pour les enregistrements associés. (Demande de tirage)

  • Augmenter la version minimale de MySQL à 5.5.8. (Demande de tirage)

  • Utiliser l'ensemble de caractères utf8mb4 par défaut dans MySQL. (Demande de tirage)

  • Ajouter la possibilité de filtrer les données sensibles dans #inspect. (Demande de tirage, Demande de tirage)

  • Changer ActiveRecord::Base.configurations pour renvoyer un objet au lieu d'un hash. (Demande de tirage)

  • Ajouter une configuration de base de données pour désactiver les verrous consultatifs. (Demande de tirage)

  • Mettre à jour la méthode alter_table de l'adaptateur SQLite3 pour restaurer les clés étrangères. (Demande de tirage)

  • Permettre à l'option :to_table de remove_foreign_key d'être inversible. (Demande de tirage)

  • Corriger la valeur par défaut pour les types de temps MySQL avec une précision spécifiée. (Demande de tirage)

  • Corriger l'option touch pour se comporter de manière cohérente avec la méthode Persistence#touch. (Demande de tirage)

  • Lever une exception pour les définitions de colonnes en double dans les migrations. (Demande de tirage)

  • Augmenter la version minimale de SQLite à 3.8. (Demande de tirage)

  • Empêcher les enregistrements parent d'être enregistrés avec des enregistrements enfants en double. (Demande de tirage)

  • S'assurer que Associations::CollectionAssociation#size et Associations::CollectionAssociation#empty? utilisent les identifiants d'association chargés s'ils sont présents. (Demande de tirage)

  • Ajouter la prise en charge du préchargement des associations des associations polymorphiques lorsque tous les enregistrements n'ont pas les associations demandées. (Commit)

  • Ajouter la méthode touch_all à ActiveRecord::Relation. (Demande de tirage)

  • Ajouter le prédicat ActiveRecord::Base.base_class?. (Demande de tirage)

  • Ajouter des options de préfixe/suffixe personnalisées à ActiveRecord::Store.store_accessor. (Demande de tirage)

  • Ajouter ActiveRecord::Base.create_or_find_by/! pour gérer la condition de course SELECT/INSERT dans ActiveRecord::Base.find_or_create_by/! en s'appuyant sur les contraintes uniques dans la base de données. (Demande de tirage)

  • Ajouter Relation#pick comme raccourci pour les plucks à valeur unique. (Demande de tirage)

9 Stockage actif

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

9.1 Suppressions

9.2 Dépréciations

  • Déprécier config.active_storage.queue au profit de config.active_storage.queues.analysis et config.active_storage.queues.purge. (Demande de tirage)

  • Déprécier ActiveStorage::Downloading au profit de ActiveStorage::Blob#open. (Commit)

  • Déprécier l'utilisation de mini_magick directement pour générer des variantes d'images au profit de image_processing. (Commit)

  • Déprécier :combine_options dans le transformateur ImageProcessing de Active Storage sans remplacement. (Commit)

9.3 Changements notables

  • Ajouter la prise en charge de la génération de variantes d'images BMP. (Demande de tirage)

  • Ajouter la prise en charge de la génération de variantes d'images TIFF. (Demande de tirage)

  • Ajouter la prise en charge de la génération de variantes d'images JPEG progressives. (Demande de tirage)

  • Ajouter ActiveStorage.routes_prefix pour configurer les routes générées par Active Storage. (Demande de tirage)

  • Générer une réponse 404 Not Found sur ActiveStorage::DiskController#show lorsque le fichier demandé est manquant dans le service de disque. (Demande de tirage)

  • Lever ActiveStorage::FileNotFoundError lorsque le fichier demandé est manquant pour ActiveStorage::Blob#download et ActiveStorage::Blob#open. (Demande de tirage)

  • Ajouter une classe générique ActiveStorage::Error dont les exceptions de Active Storage héritent. (Commit)

  • Enregistrer les fichiers téléchargés assignés à un enregistrement dans le stockage lorsque l'enregistrement est enregistré au lieu de le faire immédiatement. (Demande de tirage)

  • Remplacer éventuellement les fichiers existants au lieu de les ajouter lors de l'assignation à une collection de pièces jointes (comme dans @user.update!(images: [ … ])). Utiliser config.active_storage.replace_on_assign_to_many pour contrôler ce comportement. (Demande de tirage, Demande de tirage)

  • Ajouter la possibilité de réfléchir sur les pièces jointes définies en utilisant le mécanisme de réflexion existant d'Active Record. (Demande de tirage)

  • Ajouter ActiveStorage::Blob#open, qui télécharge un blob dans un fichier temporaire sur le disque et renvoie le fichier temporaire. (Commit)

  • Prendre en charge le streaming des téléchargements depuis Google Cloud Storage. Nécessite la version 1.11+ de la gemme google-cloud-storage. (Pull Request)

  • Utiliser la gemme image_processing pour les variantes d'Active Storage. Cela remplace l'utilisation de mini_magick directement. (Pull Request)

10 Active Model

Veuillez vous référer au [journal des modifications][active-model] pour des détails sur les changements.

10.1 Suppressions

10.2 Dépréciations

10.3 Changements notables

  • Ajouter une option de configuration pour personnaliser le format de ActiveModel::Errors#full_message. (Pull Request)

  • Ajouter la prise en charge de la configuration du nom d'attribut pour has_secure_password. (Pull Request)

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

  • Ajouter ActiveModel::Errors#of_kind? pour vérifier la présence d'une erreur spécifique. (Pull Request)

  • Corriger la méthode ActiveModel::Serializers::JSON#as_json pour les horodatages. (Pull Request)

  • Corriger le validateur de numéricité pour utiliser toujours la valeur avant la conversion de type, sauf pour Active Record. (Pull Request)

  • Corriger la validation d'égalité de numéricité de BigDecimal et Float en les convertissant en BigDecimal des deux côtés de la validation. (Pull Request)

  • Corriger la valeur de l'année lors de la conversion d'un hachage de temps multiparamètre. (Pull Request)

  • Convertir les symboles booléens faux sur un attribut booléen en faux. (Pull Request)

  • Renvoyer la date correcte lors de la conversion des paramètres dans value_from_multiparameter_assignment pour ActiveModel::Type::Date. (Pull Request)

  • Revenir à la locale parente avant de revenir à l'espace de noms :errors lors de la récupération des traductions d'erreurs. (Pull Request)

11 Active Support

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

11.1 Suppressions

  • Supprimer la méthode dépréciée #acronym_regex de Inflections. (Commit)

  • Supprimer la méthode dépréciée Module#reachable?. (Commit)

  • Supprimer Kernel#` sans remplacement. (Pull Request)

11.2 Dépréciations

  • Déprécier l'utilisation d'arguments entiers négatifs pour String#first et String#last. (Pull Request)

  • Déprécier ActiveSupport::Multibyte::Unicode#downcase/upcase/swapcase au profit de String#downcase/upcase/swapcase. (Pull Request)

  • Déprécier ActiveSupport::Multibyte::Unicode#normalize et ActiveSupport::Multibyte::Chars#normalize au profit de String#unicode_normalize. (Pull Request)

  • Déprécier ActiveSupport::Multibyte::Chars.consumes? au profit de String#is_utf8?. (Pull Request)

  • Déprécier ActiveSupport::Multibyte::Unicode#pack_graphemes(array) et ActiveSupport::Multibyte::Unicode#unpack_graphemes(string) au profit de array.flatten.pack("U*") et string.scan(/\X/).map(&:codepoints), respectivement. (Pull Request)

11.3 Changements notables

  • Ajouter la prise en charge des tests parallèles. (Pull Request)

  • S'assurer que String#strip_heredoc préserve la congelation des chaînes. (Pull Request)

  • Ajouter String#truncate_bytes pour tronquer une chaîne à une taille maximale en octets sans casser les caractères multioctets ou les groupes de graphèmes. (Pull Request)

  • Ajouter l'option private à la méthode delegate pour déléguer à des méthodes privées. Cette option accepte true/false comme valeur. (Pull Request)

  • Ajouter la prise en charge des traductions via I18n pour ActiveSupport::Inflector#ordinal et ActiveSupport::Inflector#ordinalize. (Pull Request)

  • Ajouter les méthodes before? et after? à Date, DateTime, Time et TimeWithZone. (Pull Request)

  • Corriger le bogue où URI.unescape échouait avec un mélange de caractères Unicode/échappés. (Pull Request)

  • Corriger le bogue où ActiveSupport::Cache augmentait considérablement la taille de stockage lorsque la compression était activée. (Pull Request)

  • Redis cache store : delete_matched ne bloque plus le serveur Redis. (Pull Request)

  • Corriger le bogue où ActiveSupport::TimeZone.all échouait lorsque les données tzinfo pour n'importe quel fuseau horaire défini dans ActiveSupport::TimeZone::MAPPING étaient manquantes. (Pull Request)

  • Ajouter Enumerable#index_with qui permet de créer un hash à partir d'un énumérable avec la valeur d'un bloc passé ou un argument par défaut. (Pull Request)

  • Permettre aux méthodes Range#=== et Range#cover? de fonctionner avec un argument de type Range. (Pull Request)

  • Ajouter la prise en charge de l'expiration des clés dans les opérations increment/decrement de RedisCacheStore. (Demande de tirage)

  • Ajouter les fonctionnalités de temps CPU, de temps d'inactivité et d'allocations aux événements du souscripteur de journalisation. (Demande de tirage)

  • Ajouter la prise en charge de l'objet d'événement au système de notification Active Support. (Demande de tirage)

  • Ajouter la prise en charge de la non mise en cache des entrées nil en introduisant la nouvelle option skip_nil pour ActiveSupport::Cache#fetch. (Demande de tirage)

  • Ajouter la méthode Array#extract! qui supprime et renvoie les éléments pour lesquels le bloc renvoie une valeur vraie. (Demande de tirage)

  • Conserver une chaîne HTML-safe après découpage. (Demande de tirage)

  • Ajouter la prise en charge du suivi des autoloads constants via la journalisation. (Commit)

  • Définir unfreeze_time comme un alias de travel_back. (Demande de tirage)

  • Changer ActiveSupport::TaggedLogging.new pour renvoyer une nouvelle instance de journal au lieu de modifier celle reçue en argument. (Demande de tirage)

  • Traiter les méthodes #delete_prefix, #delete_suffix et #unicode_normalize comme des méthodes non HTML-safe. (Demande de tirage)

  • Corriger le bogue où #without pour ActiveSupport::HashWithIndifferentAccess échouait avec des arguments de type symbole. (Demande de tirage)

  • Renommer Module#parent, Module#parents et Module#parent_name en module_parent, module_parents et module_parent_name. (Demande de tirage)

  • Ajouter ActiveSupport::ParameterFilter. (Demande de tirage)

  • Corriger le problème où la durée était arrondie à la seconde entière lorsque un nombre à virgule flottante était ajouté à la durée. (Demande de tirage)

  • Faire de #to_options un alias de #symbolize_keys dans ActiveSupport::HashWithIndifferentAccess. (Demande de tirage)

  • Ne plus lever d'exception si le même bloc est inclus plusieurs fois pour un Concern. (Demande de tirage)

  • Préserver l'ordre des clés transmises à ActiveSupport::CacheStore#fetch_multi. (Demande de tirage)

  • Corriger String#safe_constantize pour ne pas générer une LoadError pour les références de constantes incorrectement cadrées. (Demande de tirage)

  • Ajouter Hash#deep_transform_values et Hash#deep_transform_values!. (Commit)

  • Ajouter ActiveSupport::HashWithIndifferentAccess#assoc. (Demande de tirage)

  • Ajouter le rappel before_reset à CurrentAttributes et définir after_reset comme un alias de resets pour la symétrie. (Demande de tirage)

  • Réviser ActiveSupport::Notifications.unsubscribe pour gérer correctement les abonnés avec des expressions régulières ou plusieurs motifs. (Demande de tirage)

  • Ajouter un nouveau mécanisme de chargement automatique utilisant Zeitwerk. (Commit)

  • Ajouter Array#including et Enumerable#including pour agrandir facilement une collection. (Commit)

  • Renommer Array#without et Enumerable#without en Array#excluding et Enumerable#excluding. Les anciens noms de méthode sont conservés en tant qu'alias. (Commit)

  • Ajouter la prise en charge de la fourniture de la locale à transliterate et parameterize. (Demande de tirage)

  • Corriger Time#advance pour fonctionner avec des dates antérieures à 1001-03-07. (Demande de tirage)

  • Mettre à jour ActiveSupport::Notifications::Instrumenter#instrument pour permettre de ne pas passer de bloc. (Demande de tirage)

  • Utiliser des références faibles dans le suivi des descendants pour permettre aux sous-classes anonymes d'être collectées par le garbage collector. (Demande de tirage)

  • Appeler les méthodes de test avec la méthode with_info_handler pour permettre au plugin minitest-hooks de fonctionner. (Commit)

  • Préserver le statut html_safe? sur ActiveSupport::SafeBuffer#*. (Demande de tirage)

12 Active Job

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

12.1 Suppressions

12.2 Dépréciations

12.3 Changements notables

  • Ajouter la prise en charge de sérialiseurs personnalisés pour les arguments de Active Job. (Demande de tirage)

  • Ajouter la prise en charge de l'exécution des tâches Active dans le fuseau horaire dans lequel elles ont été mises en file d'attente. (Demande de tirage)

  • Autoriser le passage de plusieurs exceptions à retry_on/discard_on. (Commit)

  • Autoriser l'appel de assert_enqueued_with et assert_enqueued_email_with sans bloc. (Demande de tirage)

  • Envelopper les notifications pour enqueue et enqueue_at dans le rappel around_enqueue au lieu du rappel after_enqueue. (Demande de tirage)

  • Autoriser l'appel de perform_enqueued_jobs sans bloc. (Demande de tirage)

  • Autoriser l'appel de assert_performed_with sans bloc. (Demande de tirage)

  • Ajouter l'option :queue aux assertions et aux helpers de job. (Pull Request)

  • Ajouter des hooks à Active Job pour les tentatives de réessai et les suppressions. (Pull Request)

  • Ajouter une façon de tester un sous-ensemble d'arguments lors de l'exécution des jobs. (Pull Request)

  • Inclure les arguments désérialisés dans les jobs retournés par les helpers de test d'Active Job. (Pull Request)

  • Permettre aux helpers d'assertion d'Active Job d'accepter un Proc pour le mot-clé only. (Pull Request)

  • Supprimer les microsecondes et les nanosecondes des arguments du job dans les helpers d'assertion. (Pull Request)

13 Ruby on Rails Guides

Veuillez vous référer au [Changelog][guides] pour les changements détaillés.

13.1 Changements notables

  • Ajouter le guide sur les bases de données multiples avec Active Record. (Pull Request)

  • Ajouter une section sur le dépannage du chargement automatique des constantes. (Commit)

  • Ajouter le guide sur les bases de l'Action Mailbox. (Pull Request)

  • Ajouter le guide sur l'aperçu de l'Action Text. (Pull Request)

14 Crédits

Consultez la liste complète des contributeurs à Rails pour toutes les personnes qui ont passé de nombreuses heures à faire de Rails le framework stable et robuste qu'il est. Félicitations à 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.