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
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
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
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
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
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
etrails 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
etdbconsole
. (Commit)Ajout de
bootsnap
auGemfile
par défaut. (Pull Request)Prise en charge de
-
comme moyen indépendant de la plateforme pour exécuter un script depuis stdin avecrails runner
(Pull Request)Ajout de la version
ruby x.x.x
auGemfile
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
auGemfile
par défaut en tant que commentaire. (Demande de tirage)rails new
etrails plugin new
obtiennentActive Storage
par défaut. Ajoutez la possibilité de sauterActive 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
etpassword
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?
deActionDispatch::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'objetActiveSupport::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éthoderedirect_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
etX-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
dansActionController::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
pourcookies
. Ajoutez la méthode d'aliasto_h
àto_hash
poursession
. (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 parimage_tag
. (Demande d'extraction)
6.3 Changements notables
Ajoutez le type
:json
àauto_discovery_link_tag
pour prendre en charge les flux JSON. (Demande d'extraction)Ajoutez l'option
srcset
à l'aideimage_tag
. (Demande d'extraction)Corrigez les problèmes avec
field_error_proc
qui entoureoptgroup
et l'option de séparationselect
. (Demande d'extraction)Changez
form_with
pour générer des identifiants par défaut. (Commit)Ajoutez l'aide
preload_link_tag
. (Demande d'extraction)Autorisez l'utilisation d'objets appelables en tant que méthodes de groupe pour les sélections groupées. (Demande d'extraction)
7 Action Mailer
Veuillez vous référer au journal des modifications pour des changements détaillés.
7.1 Changements notables
Permettez aux classes Action Mailer de configurer leur tâche de livraison. (Demande d'extraction)
Ajoutez l'aide de test
assert_enqueued_email_with
. (Demande d'extraction)
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
deindex_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
etinitialize_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
etsum
dansActiveRecord::Calculations
. (Pull Request)Dépréciation de la délégation à
arel
dansRelation
. (Pull Request)Dépréciation de la méthode
set_state
dansTransactionState
. (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 dansActiveSupport::Cache
. Cela signifie également queActiveRecord::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 exceptionsActiveRecord::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 avecrails g application_record
. (Demande de tirage)Relation#or
accepte maintenant deux relations qui ont des valeurs différentes pourreferences
seulement, carreferences
peut être implicitement appelé parwhere
. (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
avecVERSION
spécifié.bin/rails db:migrate
avecVERSION
vide se comporte comme sansVERSION
. Vérifiez le format deVERSION
: autorise un numéro de version de migration ou le nom d'un fichier de migration. Une erreur est levée si le format deVERSION
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 queupdate_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
aveclimit
ouoffset
. (Commit)Correction d'une incohérence avec
first(n)
lorsqu'il est utilisé aveclimit()
. Le chercheurfirst(n)
respecte désormaislimit()
, ce qui le rend cohérent avecrelation.to_a.first(n)
, et également avec le comportement delast(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
ousave!
. (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 sipolymorphic?
n'est pas utilisé correctement. (Commit)Résoudre
#columns_for_distinct
de MySQL et PostgreSQL pour queActiveRecord::FinderMethods#limited_ids_for
utilise les valeurs de clé primaire correctes même si les colonnesORDER 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
dansActiveModel::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!
pourActiveModel::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
estfalse
. (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
pourHashWithIndifferentAccess
. (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
etDate#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 avecHashWithIndifferentAccess
. (Pull Request)Ajouter la prise en charge de l'objectif et de l'expiration à
ActiveSupport::MessageVerifier
etActiveSupport::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 uneDelegationError
si la cible est nulle, similaire àModule#delegate
. (Pull Request)Ajouter
ActiveSupport::EncryptedFile
etActiveSupport::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
etMessageVerifier
. (Pull Request)Renvoyer une instance de
HashWithIndifferentAccess
à partir deHashWithIndifferentAccess#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ésentationto_s
, plutôt que d'essayer de convertir en un tableau. Cela corrige un bogue oùIO#to_json
lèverait uneIOError
lorsqu'il est appelé sur un objet non lisible. (Pull Request)Ajouter la même signature de méthode pour
Time#prev_day
etTime#next_day
conformément àDate#prev_day
etDate#next_day
. Permet de passer un argument pourTime#prev_day
etTime#next_day
. (Commit)Ajouter la même signature de méthode pour
Time#prev_month
etTime#next_month
conformément àDate#prev_month
etDate#next_month
. Permet de passer un argument pourTime#prev_month
etTime#next_month
. (Commit)Ajouter la même signature de méthode pour
Time#prev_year
etTime#next_year
conformément àDate#prev_year
etDate#next_year
. Permet de passer un argument pourTime#prev_year
etTime#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 dansActiveSupport::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éthodeActiveSupport::SecurityUtils.secure_compare
enfixed_length_secure_compare
et commencer à lever uneArgumentError
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'argumentsfrom:
etto:
. (Pull Request)Ajouter l'instrumentation manquante pour
read_multi
dansActiveSupport::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
etfetch_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
- Ajouter le guide Threading and Code Execution in Rails. (Pull Request)
- Ajouter le guide Présentation d'Active Storage. (Demande de tirage)
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.