Ruby on Rails
Mise à niveau des rails
Recherche…
Mise à niveau de Rails 4.2 vers Rails 5.0
Remarque: Avant de mettre à niveau votre application Rails, veillez à toujours enregistrer votre code sur un système de contrôle de version, tel que Git.
Pour mettre à niveau Rails 4.2 vers Rails 5.0, vous devez utiliser Ruby 2.2.2 ou une version plus récente. Après la mise à niveau de votre version de Ruby si nécessaire, accédez à votre Gemfile et changez la ligne:
gem 'rails', '4.2.X'
à:
gem 'rails', '~> 5.0.0'
et sur la ligne de commande exécutée:
$ bundle update
Maintenant, lancez la tâche de mise à jour en utilisant la commande:
$ rake rails:update
Cela vous aidera à mettre à jour les fichiers de configuration. Vous serez invité à écraser les fichiers et vous avez plusieurs options à saisir:
- Y - oui, écraser
- n - non, ne pas écraser
- a - tout, écraser ceci et tous les autres
- q - quitte, abandonne
- d - diff, montre les différences entre l'ancien et le nouveau
- h - aide
En règle générale, vous devez vérifier les différences entre les anciens et les nouveaux fichiers pour vous assurer de ne pas recevoir de modifications indésirables.
Les modèles Rails 5.0 ActiveRecord
héritent d' ApplicationRecord
plutôt que d' ActiveRecord::Base
. ApplicationRecord
est la super-classe pour tous les modèles, similaire à la façon dont ApplicationController
est la super-classe pour les contrôleurs. Pour tenir compte de cette nouvelle manière de gérer les modèles, vous devez créer un fichier dans votre dossier app/models/
nommé application_record.rb
, puis modifier le contenu de ce fichier pour qu'il soit:
class ApplicationRecord < ActiveRecord::Base
self.abstract_class = true
end
Rails 5.0 gère également les rappels légèrement différents. Les rappels renvoyés par false
n'interrompront pas la chaîne de rappel, ce qui signifie que les rappels suivants seront toujours exécutés, contrairement à Rails 4.2. Lorsque vous effectuez une mise à niveau, le comportement de Rails 4.2 restera, mais vous pouvez passer au comportement Rails 5.0 en ajoutant:
ActiveSupport.halt_callback_chains_on_return_false = false
dans le fichier config/application.rb
. Vous pouvez explicitement arrêter la chaîne de rappel en appelant throw(:abort)
.
Dans Rails 5.0, ActiveJob
héritera d' ApplicationJob
, plutôt ActiveJob::Base
comme dans Rails 4.2. Pour mettre à niveau vers Rails 5.0, créez un fichier appelé application_job.rb
dans le dossier app/jobs/
. Modifier le contenu de ce fichier pour qu'il soit:
class ApplicationJob < ActiveJob::Base
end
Ensuite, vous devez modifier tous vos travaux pour qu'ils héritent d' ApplicationJob
plutôt que d' ActiveJob::Base
.
L'un des autres changements les plus importants de Rails 5.0 ne nécessite aucun changement de code, mais changera la façon dont vous utilisez la ligne de commande avec vos applications Rails. Vous pourrez utiliser bin/rails
, ou simplement des rails
, pour exécuter des tâches et des tests. Par exemple, au lieu d'utiliser $ rake db:migrate
, vous pouvez maintenant faire $ rails db:migrate
. Si vous exécutez $ bin/rails
, vous pouvez afficher toutes les commandes disponibles. Notez que la plupart des tâches qui peuvent maintenant être exécutées avec bin/rails
fonctionnent toujours avec rake
.