1 Mise à niveau vers Rails 7.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 mettre à niveau vers Rails 6.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 7.0. Une liste de choses à surveiller lors de la mise à niveau est disponible dans le guide de mise à niveau de Ruby on Rails.
2 Principales fonctionnalités
3 Railties
Veuillez vous référer au [journal des modifications][railties] pour les changements détaillés.
3.1 Suppressions
- Suppression de la configuration obsolète
config
dansdbconsole
.
3.2 Dépréciations
3.3 Changements notables
Sprockets est maintenant une dépendance facultative
La gem
rails
ne dépend plus desprockets-rails
. Si votre application a encore besoin d'utiliser Sprockets, assurez-vous d'ajoutersprockets-rails
à votre Gemfile.gem "sprockets-rails"
4 Action Cable
Veuillez vous référer au [journal des modifications][action-cable] pour les changements détaillés.
4.1 Suppressions
4.2 Dépréciations
4.3 Changements notables
5 Action Pack
Veuillez vous référer au [journal des modifications][action-pack] pour les changements détaillés.
5.1 Suppressions
Suppression de la méthode obsolète
ActionDispatch::Response.return_only_media_type_on_content_type
.Suppression de la configuration obsolète
Rails.config.action_dispatch.hosts_response_app
.Suppression de la méthode obsolète
ActionDispatch::SystemTestCase#host!
.Suppression du support obsolète pour passer un chemin relatif à
fixture_file_upload
par rapport àfixture_path
.
5.2 Dépréciations
5.3 Changements notables
6 Action View
Veuillez vous référer au [journal des modifications][action-view] pour les changements détaillés.
6.1 Suppressions
- Suppression de la configuration obsolète
Rails.config.action_view.raise_on_missing_translations
.
6.2 Dépréciations
6.3 Changements notables
button_to
déduit la méthode HTTP [method] à partir d'un objet Active Record si l'objet est utilisé pour construire l'URLbutton_to("Faire un POST", [:do_post_action, Workshop.find(1)]) # Avant #=> <input type="hidden" name="_method" value="post" autocomplete="off" /> # Après #=> <input type="hidden" name="_method" value="patch" autocomplete="off" />
7 Action Mailer
Veuillez vous référer au [journal des modifications][action-mailer] pour les changements détaillés.
7.1 Suppressions
- Suppression des classes obsolètes
ActionMailer::DeliveryJob
etActionMailer::Parameterized::DeliveryJob
au profit deActionMailer::MailDeliveryJob
.
7.2 Dépréciations
7.3 Changements notables
8 Active Record
Veuillez vous référer au [journal des modifications][active-record] pour les changements détaillés.
8.1 Suppressions
Suppression de l'argument obsolète
database
deconnected_to
.Suppression de la configuration obsolète
ActiveRecord::Base.allow_unsafe_raw_sql
.Suppression de l'option obsolète
:spec_name
dans la méthodeconfigs_for
.Suppression du support obsolète de chargement YAML de l'instance
ActiveRecord::Base
dans les formats Rails 4.2 et 4.1.Suppression de l'avertissement de dépréciation lorsque la colonne
:interval
est utilisée dans une base de données PostgreSQL.Maintenant, les colonnes d'intervalle renverront des objets
ActiveSupport::Duration
au lieu de chaînes de caractères.Pour conserver l'ancien comportement, vous pouvez ajouter cette ligne à votre modèle :
attribute :column, :string
Suppression du support obsolète pour résoudre la connexion en utilisant
"primary"
comme nom de spécification de connexion.Suppression du support obsolète pour citer des objets
ActiveRecord::Base
.Suppression du support obsolète pour convertir des objets
ActiveRecord::Base
en valeurs de base de données.Suppression du support obsolète pour passer une colonne à
type_cast
.Suppression de la méthode obsolète
DatabaseConfig#config
.Suppression des tâches Rake obsolètes :
db:schema:load_if_ruby
db:structure:dump
db:structure:load
db:structure:load_if_sql
db:structure:dump:#{name}
db:structure:load:#{name}
db:test:load_structure
db:test:load_structure:#{name}
Suppression du support obsolète pour
Model.reorder(nil).first
pour effectuer une recherche en utilisant un ordre non déterministe.Suppression des arguments
environment
etname
obsolètes deTasks::DatabaseTasks.schema_up_to_date?
.Suppression de la méthode obsolète
Tasks::DatabaseTasks.dump_filename
.Suppression de la méthode obsolète
Tasks::DatabaseTasks.schema_file
.Suppression de la méthode obsolète
Tasks::DatabaseTasks.spec
.Suppression de la méthode obsolète
Tasks::DatabaseTasks.current_config
.Suppression de la méthode obsolète
ActiveRecord::Connection#allowed_index_name_length
.Suppression de la méthode obsolète
ActiveRecord::Connection#in_clause_length
.Suppression de la méthode obsolète
ActiveRecord::DatabaseConfigurations::DatabaseConfig#spec_name
.Suppression de la méthode obsolète
ActiveRecord::Base.connection_config
.Suppression de la méthode obsolète
ActiveRecord::Base.arel_attribute
.Suppression de la méthode obsolète
ActiveRecord::Base.configurations.default_hash
.Suppression de la méthode obsolète
ActiveRecord::Base.configurations.to_h
.Suppression des méthodes obsolètes
ActiveRecord::Result#map!
etActiveRecord::Result#collect!
.Suppression de la méthode obsolète
ActiveRecord::Base#remove_connection
.
8.2 Dépréciations
- Dépréciation de la méthode
Tasks::DatabaseTasks.schema_file_type
.
8.3 Changements notables
Annulation des transactions lorsque le bloc retourne plus tôt que prévu.
Avant ce changement, lorsque le bloc de transaction retournait prématurément, la transaction était validée.
Le problème est que les délais d'attente déclenchés à l'intérieur du bloc de transaction faisaient également valider la transaction incomplète, donc afin d'éviter cette erreur, le bloc de transaction est annulé.
La fusion des conditions sur la même colonne ne conserve plus les deux conditions, et sera systématiquement remplacée par la dernière condition.
# Rails 6.1 (la clause IN est remplacée par une condition d'égalité du côté du mergeur) Author.where(id: [david.id, mary.id]).merge(Author.where(id: bob)) # => [bob] # Rails 6.1 (les deux conditions de conflit existent, déprécié) Author.where(id: david.id..mary.id).merge(Author.where(id: bob)) # => [] # Rails 6.1 avec rewhere pour migrer vers le comportement de Rails 7.0 Author.where(id: david.id..mary.id).merge(Author.where(id: bob), rewhere: true) # => [bob] # Rails 7.0 (même comportement avec la clause IN, la condition du mergeur est systématiquement remplacée) Author.where(id: [david.id, mary.id]).merge(Author.where(id: bob)) # => [bob] Author.where(id: david.id..mary.id).merge(Author.where(id: bob)) # => [bob]
Stockage actif
Veuillez vous référer au journal des modifications pour des changements détaillés.
8.4 Suppressions
8.5 Dépréciations
8.6 Changements notables
9 Modèle actif
Veuillez vous référer au [journal des modifications][active-model] pour des changements détaillés.
9.1 Suppressions
Supprimer l'énumération obsolète des instances de
ActiveModel::Errors
en tant que Hash.Supprimer
ActiveModel::Errors#to_h
obsolète.Supprimer
ActiveModel::Errors#slice!
obsolète.Supprimer
ActiveModel::Errors#values
obsolète.Supprimer
ActiveModel::Errors#keys
obsolète.Supprimer
ActiveModel::Errors#to_xml
obsolète.Supprimer la prise en charge obsolète de la concaténation des erreurs vers
ActiveModel::Errors#messages
.Supprimer la prise en charge obsolète de la suppression des erreurs à partir de
ActiveModel::Errors#messages
.Supprimer la prise en charge obsolète de la suppression des erreurs à partir de
ActiveModel::Errors#messages
.Supprimer la prise en charge obsolète de l'utilisation de
[]=
dansActiveModel::Errors#messages
.Supprimer la prise en charge de la charge Marshal et YAML du format d'erreur Rails 5.x.
Supprimer la prise en charge de la charge Marshal du format
ActiveModel::AttributeSet
de Rails 5.x.
9.2 Dépréciations
9.3 Changements notables
10 Support actif
Veuillez vous référer au journal des modifications pour des changements détaillés.
10.1 Suppressions
Supprimer
config.active_support.use_sha1_digests
obsolète.Supprimer
URI.parser
obsolète.Supprimer la prise en charge obsolète de l'utilisation de
Range#include?
pour vérifier l'inclusion d'une valeur dans une plage de date et d'heure est obsolète.Supprimer
ActiveSupport::Multibyte::Unicode.default_normalization_form
obsolète.
10.2 Dépréciations
Déprécier le passage d'un format à
#to_s
au profit de#to_fs
dansArray
,Range
,Date
,DateTime
,Time
,BigDecimal
,Float
etInteger
.Cette dépréciation permet aux applications Rails de profiter d'une optimisation de Ruby 3.1 optimization qui rend l'interpolation de certains types d'objets plus rapide.
Les nouvelles applications n'auront pas la méthode
#to_s
substituée dans ces classes, les applications existantes peuvent utiliserconfig.active_support.disable_to_s_conversion
.
10.3 Changements notables
11 Job actif
Veuillez vous référer au [journal des modifications][active-job] pour des changements détaillés.
11.1 Suppressions
Suppression du comportement obsolète qui ne stoppait pas les rappels
after_enqueue
/after_perform
lorsqu'un rappel précédent était arrêté avecthrow :abort
.Supprimer l'option obsolète
:return_false_on_aborted_enqueue
.
11.2 Dépréciations
- Déprécier
Rails.config.active_job.skip_after_callbacks_if_terminated
.
11.3 Changements notables
12 Texte d'action
Veuillez vous référer au [journal des modifications][action-text] pour des changements détaillés.
12.1 Suppressions
12.2 Dépréciations
12.3 Changements notables
13 Boîte aux lettres d'action
Veuillez vous référer au journal des modifications pour des changements détaillés.
13.1 Suppressions
Supprimer
Rails.application.credentials.action_mailbox.mailgun_api_key
obsolète.Supprimer la variable d'environnement obsolète
MAILGUN_INGRESS_API_KEY
.
13.2 Dépréciations
13.3 Changements notables
14 Guides Ruby on Rails
Veuillez vous référer au [journal des modifications][guides] pour des changements détaillés.
14.1 Changements notables
15 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. 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.