Mise à niveau des rails de 2.3 à 3.0 - FastRuby.io | Service de mise à niveau des rails (2024)

Mise à niveau des rails de 2.3 à 3.0 - FastRuby.io | Service de mise à niveau des rails (1)

Luciano Becerra

sur Des rails,Mises à jour

Cet article est le premier de notreLa série Upgrade Rails ouvre une nouvelle fenêtre. Nous couvrirons les aspects les plus importants que vous devez connaître pour mettre à jour votreRubis sur railsouvre une nouvelle fenêtrecandidature deversion 2.3ouvre une nouvelle fenêtrepour3.0ouvre une nouvelle fenêtre.

  1. Les préparatifs
  2. version rubis
  3. Outils
  4. Protection XSS
  5. Fichiers de configuration
  6. Gemmes
  7. RSpec
  8. Ignorer les modules Rails
  9. HTML échappé par défaut
  10. Dépréciations
    • Enregistrement actif
    • Courrier d'action
    • Syntaxe ERB
    • Assistants AJAX
    • Métal
    • Rails
  11. Prochaines étapes

1. Préparatifs

Avant de commencer le processus de mise à niveau, nous avons quelques préparations recommandées :

  • Votre application Rails devrait avoir la dernièreversion corrigéeouvre une nouvelle fenêtreavant de passer à la prochaine version majeure/mineure.
  • Vous devez avoir une couverture de test d'au moins 80 %, sauf si vous disposez d'une équipe d'assurance qualité dédiée.
  • Suivez un workflow de flux Git pour gérer activement au moins deux environnements : la mise en scène et la production.
  • Vérifiez votre Gemfile.lock pour les incompatibilités en utilisantRailsBumpouvre une nouvelle fenêtre
  • Créez un mécanisme de double démarrage, le moyen le plus rapide de le faire est d'installer le joyau pratiquerails_suivantsouvre une nouvelle fenêtre.

Pour plus de détails, consultez notre article surComment préparer votre application pour une mise à niveau Rails ouvre une nouvelle fenêtre.

2. Version rubis

Rails 3.0 nécessite Ruby1.8.7ouvre une nouvelle fenêtreou plus, mais pas plus de1.9.3ouvre une nouvelle fenêtre. Si vous souhaitez utiliser Ruby 1.9.x, nous vous recommandons de passer directement à 1.9.3. Aussi Rubis1.9.1ouvre une nouvelle fenêtren'est pas utilisable car il a des défauts de segmentation sur Rails 3.0. Cela signifie que le compatibleVersions rubisouvre une nouvelle fenêtrepour Rails 3.0 sont 1.8.7,1.9.2ouvre une nouvelle fenêtre, ou 1.9.3.

Il y a unplugin officielouvre une nouvelle fenêtrequi facilite le processus de mise à niveau. Il vous suffit d'installer le script en faisantscript/plugin installer git://github.com/rails/rails_upgrade.gitpuis courirrails de râteau : mise à niveau : vérificationpour voir la plupart des fichiers que vous devez mettre à niveau dans votre application. Il fournit également d'autres générateurs pour mettre à niveau des zones spécifiques de votre application, comme les itinéraires ou les gemmes.

Parfois, il est également utile de vérifier quels fichiers ont changé entre deux versions spécifiques de Rails. Heureusem*ntRails différentielsouvre une nouvelle fenêtrerend cela facile.

4. Protection XSS

Dans cette version, Rails ajoute automatiquementProtection XSSouvre une nouvelle fenêtreafin d'échapper à tout contenu, vous devrez donc probablement mettre à jour vos modèles en fonction de cela. Heureusem*nt il y a unplugin officielouvre une nouvelle fenêtrepour ça. Nous vous recommandons d'y jeter un œil.

5. Fichiers de configuration

Rails 3 introduit le concept d'objet Application. Un objet d'application contient toutes les configurations d'application spécifiques et est similaire au fichier config/environment.rb actuel de Rails 2.3. L'objet application est défini dans config/application.rb. Vous devriez y déplacer la plupart de la configuration que vous aviez dans config/environment.rb.

En termes de routes, vous devez appliquer quelques modifications à votre fichier routes.rb. Par exemple:

# Rails 2.3 voies :Contrôleur d'action::Routage::Itinéraires.dessiner faire |carte| carte.ressources :des produitsfin# Voie Rails 3.0 :Nom de l'application::Application.itinéraires faire ressources :des produitsfin

Si vous avez installé le plugin mentionné à l'étape 3, vous pouvez exécuter "rake rails:upgrade:routes" pour générer un nouvel ensemble de routes. Tu peux aller àCet articleouvre une nouvelle fenêtrepour lire un article détaillé sur ce sujet.

6. Gemmes

Bundlerouvre une nouvelle fenêtreest le moyen par défaut de gérer les dépendances Gem dans les applications Rails 3. Vous devrez ajouter unFichiers de gemmesouvre une nouvelle fenêtreà la racine de votre application, définissez-y toutes vos gemmes, puis débarrassez-vous des instructions config.gem.

# Avant:configuration.gemme 'aws-sdk', :version => '1.0.0' # (config/environnement.rb)configuration.gemme 'faire levier', :version => ['>= 0.6.0', '< 0.7.0'] # (config/development.rb)# Maintenant:(Fichiers de gemmes)gemme 'aws-sdk', '1.0.0'groupe :développement faire gemme 'faire levier', '~> 0.6.0'fin

N'oubliez pas que si vous avez installé le plugin mentionné à l'étape 3, vous pouvez exécuterrails de râteau : mise à niveau : gemmes. Cette tâche extraira vos appels config.gem et générera du code que vous pourrez mettre dans votre Gemfile.

7. RSpec

Si vous utilisez RSpec 1.x pour vos tests, vous devez mettre à jour vers RSpec 2.x. Vous devrez peut-être mettre à jour certaines références àSpécificationavecRSpec.

8. Ignorer les modules Rails

Si vous n'avez pas besoin de charger un module (prenons actionmailer comme exemple), dans Rails 2, vous utiliserez une configuration comme celle-ci dans votre fichier environment.rb :

configuration.cadres -= [ :action_mailer ]

Pour Rails 3, vous devez supprimer cela et modifier la façon dont vous avez besoindes railsdans votre nouveau fichier application.rb :

exiger "des rails"# au lieu de `require "rails/all"`%w( active_record action_controller active_resource rails/test_unit).chaque faire |cadre| commencer exiger "#{cadre}/railtie" sauvetage LoadError finfin

9. HTML échappé par défaut

Dans Rails 3, vous n'avez plus besoin d'utiliser lehméthode d'assistance pour échapper au HTML. Il est maintenant échappé par défaut. Si vous avez besoin de dire à Rails de ne pas échapper au HTML, vous devrez appeler.html_safesur cette chaîne.

10. Dépréciations

Il y a un tas de dépréciations qui se produisent au cours de cette version :

Enregistrement actif

  • La méthode pour définir une portée nommée s'appelle maintenantportéeau lieu deportée_nommée.

  • Dans les méthodes de portée, vous ne transmettez plus les conditions sous forme de hachage :

# Avant:portée_nommée :actif, :conditions => ["actif = ?", vrai]# Maintenant:portée :actif, ("actif = ?", vrai)
  • enregistrer (faux)est obsolète, vous devez donc utiliserenregistrer(:valider => faux).

  • Les messages d'erreur I18n pour Active Record doivent être modifiés de:en.activerecord.errors.templatepour:fr.errors.template.

  • model.errors.onest déprécié au profit demodel.errors[]

  • Il existe une nouvelle syntaxe pour les validations de présence :

# Avant:valide_présence_de :e-mail# Maintenant:valide :e-mail, présence:vrai
  • ActiveRecord ::Base.colorize_loggingetconfig.active_record.colorize_loggingsont dépréciés au profit deRails :: LogSubscriber.colorize_loggingouconfig.colorize_logging.

Courrier d'action

  • :jeu de caractères,:type_de_contenu,:mime_version,:ordre_de_pièces_implicitesont tous obsolètes au profit deActionMailer.default :clé => valeurdéclarations de style.
  • Mailer dynamiquecreate_method_nameetlivrer_method_namesont obsolètes, appelez simplementnom_méthodequi renvoie maintenant unCourrier ::Messageobjet.
# Avant:message = UtilisateurMail.create_welcome_email(utilisateur)UtilisateurMail.livrer(message)# ouUtilisateurMail.livrer_bienvenue_email(utilisateur)# Maintenant:UtilisateurMail.bienvenue_email(utilisateur).livrer
  • template_rootest obsolète, passez des options à un appel de rendu à l'intérieur d'un proc à partir duformat.mime_typeméthode à l'intérieur du bloc de génération de courrier.
  • La méthode body pour définir les variables d'instance est obsolète (corps {:ivar => valeur}), déclarez simplement les variables d'instance directement dans la méthode et elles seront disponibles dans la vue.
# Avant:définitivement bienvenue_email(utilisateur) ... corps {:utilisateur => utilisateur, :url => "https://fastruby.io"}fin# Maintenant:définitivement bienvenue_email(utilisateur) ... @utilisateur = utilisateur @url = "https://fastruby.io"fin
  • Les mailers devraient maintenant être dans app/mailers au lieu de app/models.

Syntaxe ERB

Les aides de bloc qui utilisent concat (par exemple, form_for, form_tag) devront remplacer< %avec<%=. La syntaxe actuelle continuera de fonctionner pour le moment, mais vous recevrez des avertissem*nts d'obsolescence car elle disparaîtra à l'avenir.

Aides AJAX

Les assistants AJAX JavaScript ont été déplacés pour être discrets et utiliser:distant => vrai. Selon l'appel d'assistance, certains écouteurs d'événements JavaScript peuvent devoir être ajoutés. Par exemple:

link_to_remote ("Exemple de mise à jour", :mise à jour => 'result_div_id', :URL => { :action => 'exemple'})

Devra changer pour :

lié à "Exemple de mise à jour", { :action => 'exemple' }, :télécommande => vrai, :identifiant => 'mon lien'

Et un écouteur d'événement JavaScript devra être ajouté pour ce que fait la "mise à jour".

Exemple:

$("#mon lien").sur('ajax:succès', fonction(réponse, statut) { $("#result_div_id").html(réponse.texte de réponse)})

Métal

Étant donné que Rails 3 est plus proche deÉtagèreouvre une nouvelle fenêtre, leMétalouvre une nouvelle fenêtrel'abstraction n'est plus nécessaire.

C'est leexplication officielleouvre une nouvelle fenêtrede ce que vous devez faire pour mettre à jour vos métaux existants :

  • Si votre métal se comporte comme un middleware, ajoutez-le à la pile middleware via config.middleware.use. Vous pouvez utiliser des méthodes sur la pile middleware pour contrôler exactement où elle doit aller.
  • S'il se comporte comme un point de terminaison Rack, vous pouvez vous y connecter dans le routeur. Cela se traduira par un temps de routage plus optimal et vous permettra de supprimer le code de votre point de terminaison qui correspond à des URL spécifiques en faveur d'une gestion plus puissante dans le routeur lui-même.

À l'avenir, vous pouvez utiliser ActionController :: Metal pour obtenir un contrôleur très rapide avec la possibilité d'activer des fonctionnalités spécifiques du contrôleur sans payer la pénalité de la pile complète du contrôleur.

Rails

Railsouvre une nouvelle fenêtredéprécie les constantes suivantes dans cette version :

  • RAILS_ROOTen faveur deRails.root
  • RAILS_ENVen faveur deRails.env
  • RAILS_DEFAULT_LOGGERen faveur deRails.logger

Aussi,PLUGIN/rails/tâchesetPLUGIN/tâchesne sont plus chargés toutes les tâches, doivent maintenant être danslib/tâches.

# Avant :fournisseur/plugins/ombulabs_patches/tasks/s3_backup.rake# Maintenant :lib/tasks/ombulabs_patches/s3_backup.rake

11. Prochaines étapes

Après avoir correctement exécuté votre application dans Rails 3.0, vous souhaiterez probablement continuer à travailler sur ce parcours de mise à niveau de Rails. Alors n'oubliez pas de consulter notreLa série de mise à niveau des rails ouvre une nouvelle fenêtrepour rendre cela facile.

Si vous n'êtes pas encore sur Rails 3.0, nous pouvons vous aider ! Téléchargez notre eBook gratuit :Le guide complet de mise à niveau des rails ouvre une nouvelle fenêtre.

Mise à niveau des rails de 2.3 à 3.0 - FastRuby.io | Service de mise à niveau des rails (2024)

FAQs

How to upgrade Rails 4 to 7? ›

To move between versions:
  1. Change the Rails version number in the Gemfile and run bundle update .
  2. Change the versions for Rails JavaScript packages in package. json and run yarn install , if running on Webpacker.
  3. Run the Update task.
  4. Run your tests.

How to upgrade Rails 6 to 7? ›

Here are the steps to consider when upgrading a Rails application to version 7:
  1. Step 1: Update rails in gemfile. To identify the current version of your application, you can use the below command. ...
  2. Step 2: Run the update rails tasks. ...
  3. Step 3: Verify framework defaults. ...
  4. Step 4: Add Sprockets. ...
  5. Step 5: Verify depreciated methods.
Jan 13, 2023

How to upgrade Rails 4 to 6? ›

How to upgrade to Rails 6?
  1. Step 1: Update Ruby to at least version 2.5. ...
  2. Step 2: Upgrade Rails to the latest version in 5.2 series (5.2. ...
  3. Step 3: Update the Gemfile with gem 'rails', github: 'rails/rails' and run bundle update rails. ...
  4. Step 4: Run rails app:update from terminal.

What is the minimum Ruby version for Rails 7? ›

Rails 7 requires Ruby 2.7. 0 or newer.

What is the difference between rails 4 and 5? ›

In Rails 4, the assign_attributes method was part of ActiveRecord, in Rails 5 it is part of ActiveModel. This change is mentioned in the Rails5 CHANGELOG which everyone reads prior to upgrading Rails.

How to upgrade rails from 5 to 7? ›

If we were to upgrade an app from Rails 5.2 to 7.0, we would first upgrade it to Rails 6.0, deploy to production, then upgrade to 6.1, deploy to production, and then upgrade to 7.0 and deploy to production. The Rails Guides also have documentation for changes involving each version jump which makes your job easier.

What is Turbo in rails? ›

Turbo gives you the speed of a single-page web application without having to write any JavaScript. Turbo accelerates links and form submissions without requiring you to change your server-side generated HTML.

Does rails 6 require Ruby 2.5 0 or newer? ›

While creating a new Rails 6 app, we need to ensure that the current Ruby version in the shell is set to 2.5 or newer. If it is set to an older version then the same version will be used by the rails new command to set the Ruby version in . ruby-version and in Gemfile respectively in the created Rails app.

When did rails 7 come out? ›

15 Dec 2021

What's new in rails 5? ›

Action Cable is a new framework in Rails 5. It seamlessly integrates WebSockets with the rest of your Rails application. Action Cable allows for real-time features to be written in Ruby in the same style and form as the rest of your Rails application, while still being performant and scalable.

What's new in rails 7? ›

Rails 7.0, the most recent version of Ruby on Rail, was released on December 15, 2021. This version includes the addition of the Asynchronous Querying, Encrypted Database Layer, Comparison Validator, and many more features to develop new web apps for the modern world.

What's new rails 6? ›

Rails 6 adds parallel test to Rails applications by default. Built by the GitHub team just like multiple db support, parallel testing is a functionality that may turn extremely useful when running hard tests for your application.

Does anyone still use Ruby on Rails? ›

And that hasn't changed. "Ruby on Rails is still a great way for a small team to have the impact of a large team," says Noel Rappin, co-author of Programming Ruby 3.2. "It remains one of the fastest ways to go from zero to a real, valuable product."

Is Ruby on Rails outdated? ›

No, Ruby on Rails is not dead, and it is still a great choice for building web apps. Let's take a closer look at why some people ask if Ruby on Rails is dead, show you why Rails is not dead or dying, and explore the projects Ruby on Rails is used for every day.

Is Ruby on Rails good for beginners? ›

Ruby on Rails is beginner-friendly

Ruby on Rails applications are largely written in Ruby, but despite that, there are numerous features that make it particularly straightforward for beginners to learn.

How to update rails version on Mac? ›

Updating your Rails
  1. At your Gemfile, replace the current version with the aiming version. ...
  2. Run the update task using the command: rails app:update This task will start an interactive session creating new files and changing old ones. ...
  3. Fix the deprecated features related to your target version.
Jan 24, 2022

How to install rails latest version? ›

  1. Prerequisites.
  2. Step 1 – Install rbenv and Dependencies.
  3. Step 2 – Installing Ruby with ruby-build.
  4. Step 3 – Working with Gems.
  5. Step 4 – Installing Rails.
  6. Step 5 – Updating rbenv.
  7. Step 6 – Uninstalling Ruby versions.
  8. Step 7 – Uninstalling rbenv.
Jan 24, 2023

How to upgrade rails 4 to 5? ›

A step by step guide to upgrade rails 4 application to rails 5
  1. Step 1: Upgrading ruby and bundle install. Install the required ruby version. ...
  2. Step 2: Config changes. ...
  3. Step 3: Model & Controller changes. ...
  4. Step 4: Migration changes. ...
  5. Step 5: Necessary changes in RSpec.
Jul 4, 2020

References

Top Articles
Latest Posts
Article information

Author: Aron Pacocha

Last Updated:

Views: 5972

Rating: 4.8 / 5 (68 voted)

Reviews: 91% of readers found this page helpful

Author information

Name: Aron Pacocha

Birthday: 1999-08-12

Address: 3808 Moen Corner, Gorczanyport, FL 67364-2074

Phone: +393457723392

Job: Retail Consultant

Hobby: Jewelry making, Cooking, Gaming, Reading, Juggling, Cabaret, Origami

Introduction: My name is Aron Pacocha, I am a happy, tasty, innocent, proud, talented, courageous, magnificent person who loves writing and wants to share my knowledge and understanding with you.