08/05/2020

Migration vers Rails 6.0.3 & Ruby 2.7

Rails
Ruby

Vous avez des applications Rails qui commencent à rouiller et vous souhaitez leurs donner un peu de modernité avec une belle carrosserie neuve ? Avec la sortie de Ruby 2.7 et de Rails 6, franchir le pas vaut vraiment le coup. Ce nouveau Ruby est plus rapide et surtout Rails 6 permet d'intégrer facilement des morceaux de React, Stimulus, etc. pour en améliorer l'intéractivité. Quant à Webpack, il facilite l'emploi de bibliothèques externes comme Bootstrap.

Le moyen le plus simple pour migrer vers une version majeur de Rails semble être la création d'une nouvelle application, puis la copie des éléments signifiants de l'ancienne vers la nouvelle.

Les instructions qui suivent servent à migrer une application qui utilise Bootstrap pour la déco.

Création de la nouvelle application Rails 6.0.3 & Ruby 2.7

$ rvm rvm use 2.7.0 $ gem install rails -v 6.0.3 $ rails new monApplicationToutePimpante --version=6.0.3 $ cd monApplicationToutePimpante

Bootstrap

$ yarn add bootstrap $ yarn add jquery popper.js

# app/javascript/packs/application.js import "jquery"; import "popper.js"; import "bootstrap";

# In app/javascript/stylesheets/application.scss @import "~bootstrap/scss/bootstrap";

# In app/javascript/packs/application.js import "../stylesheets/application";

Font Awesome

$ yarn add @fortawesome/fontawesome-free

// app/javascript/stylesheets/application.scss @import '@fortawesome/fontawesome-free';

// app/javascript/packs/application.js import "@fortawesome/fontawesome-free/js/all";

Pour intégrer facilement FA dans les vues

gem 'font_awesome5_rails'

Ce qui permet ensuite d'utiliser fa_icon :

<%= fa_icon "baby", text: "BB", class: 'mx-2', size: '3x' %>

Transfert de l'application vers sa nouvelle carrosserie Rails 6

$ cp ../monAncienneApplicationQuiRouille/README.md . $ cp -R ../monAncienneApplicationQuiRouille/app/ . $ Copier dans le nouveau fichier Gemfile les gems spécifiques à l'ancienne application

La base de données

$ cp ../monAncienneApplicationQuiRouille/config/database.yml config $ cp ../monAncienneApplicationQuiRouille/db/schema.rb db $ cp -R ../monAncienneApplicationQuiRouille/db/migrate/ db $ rails db:setup

Les fichiers de configuration

$ cp ../monAncienneApplicationQuiRouille/config/routes.rb config $ cp ../monAncienneApplicationQuiRouille/config/initializers/devise.rb config/initializers/ $ cp ../monAncienneApplicationQuiRouille/config/locales/* config/locales/ $ copie des éléments spécifiques dans config/application.rb

Voilà, c'est fait. Bravo. Vous êtes maintenant l'heureuse développeur d'une application qui va pouvoir évoluer facilement et suivre la mode des intéractions coté client, à la React.

Enjoy !