Go to Hackademy website

Ruby on Rails en 2018

Quentin Buirette

Posté par Quentin Buirette dans les catégories actualité

Vous me voyez sans doute venir… 

Utiliser Ruby on Rails en 2018 ? Et puis quoi encore ?

Ruby on Rails est un bon et un mauvais framework pour de nombreuses raisons. Qu’en est-il de ce choix technologique aujourd’hui ?

C’est justement ce que nous allons découvrir !

Ruby on Rails

Rails et ses inconvénients

Un langage peu performant

Comme vous le savez parfaitement, Ruby on Rails se base sur le langage Ruby, qui n’est pas si vieux puisqu’il n’a que 25 ans.

Malgré sa jeunesse vigoureuse, Ruby souffre de quelques défauts compensés par un objectif précis : en faire un langage cool !

Ruby n’a pas toujours eu bonne presse auprès des différents acteurs de l’IT. Le principal argument ? Les performances de Ruby ne sont pas dignes d’un bon langage pour développer des applications.

Il est vrai qu’on ne penserait pas forcément à Ruby pour faire du système embarqué, Il suffit de taper les trois termes embedded, system et ruby dans une recherche sur Github pour s’en rendre compte.

Mais il n’en est pas moins largement suffisant pour une application complexe ; sans compter qu’il existe une multitude de projets importants qui utilisent Ruby on Rails comme Redmine, Basecamp, Github, Airbnb ou encore Kickstarter, pour ne citer qu’eux.

Par ailleurs, la core team annonce un gain de performance important pour la version 3 de Ruby.

On peut alors espérer un regain d’intérêt pour ce langage.

Comme l’a dit un jour le créateur de Ruby, le dénommé « Matz », de son vrai nom Yukihiro Matsumoto :

Ruby est simple en apparence, mais son architecture interne est très complexe — tout comme notre corps peut l’être.

De la magie abracadabrantesque

C’est bien connu, pour la plupart de ses détracteurs, Ruby on Rails est un framework pensé pour les magiciens sans talent…

Un problème, un monkey patch et le tour est joué !

C’est un fait, déroutant, ambigu, pas très propre, mais concret.

Bien que plaisant, le DSL de Rails peut parfois être obscur. Par ailleurs, il se distingue partiellement de celui de Ruby et peut entraîner des incompréhensions entre le framework et le langage. C’est pourquoi il est important de faire la distinction entre les deux.

Si vous n’êtes pas d’accord avec ça, alors venez tester vos connaissances avec ce quiz Ruby ou Rails !

D’expérience personnelle, il vaut mieux commencer par les bases de Ruby lorsqu’on s’intéresse à Rails. Ayant commencé par le framework sans connaître le langage et sans notion de magie quelconque, j’ai eu quelques difficultés à m’y retrouver.

Une application peut vite devenir un monstre difficile à maîtriser si les règles ne sont pas correctement établies dès l’origine du projet

Ruby on Rails nous permet notamment de concevoir des applications monolithiques.

Une application monolithique peut servir un dessein et peut parfaitement répondre aux besoins des utilisateurs. Toutefois, ce terme possède une connotation négative, puisqu’on imagine souvent un code difficile à maintenir ou à faire évoluer.

Par monolithique, on entend également ce qui se présente sous l’aspect d’un tout cohérent, sans contradiction (définition Larousse).

2001: A space odyssey

C’est assez vrai en réalité. La plupart des projets Rails vont avoir des contrôleurs à rallonge, sans parler des modèles qui contiennent toute la logique de validation, de persistance des données et de métier, ce qui n’est jamais une bonne chose…

Et ne parlons même pas de la logique métier présente directement dans la vue, puisque là aussi Rails nous permet de faire ce genre d’hérésie…

Je suis sûr que vous en avez plein d’autres…

On trouve aisément des points négatifs dans l’utilisation quotidienne de nos langages, frameworks, outils… Ce peut être intéressant de les lister afin de s’en faire une meilleure opinion sur le long terme.

Néanmoins, s’acharner à stigmatiser certaines technologies me paraît contre-productif.

Avec toutes les possibilités qui nous sont offertes en 2018, il nous appartient de creuser davantage afin d’affiner nos choix technologiques en fonction des projets sur lesquels nous travaillerons demain.

Rails possède quelques avantages significatifs

Simple à prendre en main

On peut lui reprocher beaucoup de choses, mais j’apprécie particulièrement Rails pour sa prise en main.

Nul besoin d’allouer un temps considérable à la formation pour commencer à faire du Ruby on Rails.

Poser les bases d’une nouvelle application n’a jamais été aussi simple

Ruby on Rails est l’un des premiers framework pensé par des développeurs, pour les développeurs. C’est la raison pour laquelle il est devenu si simple à utiliser.

Voici un setup basique pour lancer une nouvelle application :

# Requirement

Install Ruby
Install Rails
$ rails new my_project

$ rake db:create

$ bin/rails generate scaffold HighScore game:string score:integer
  invoke  active_record
  create    db/migrate/20130717151933_create_high_scores.rb
  create    app/models/high_score.rb
  invoke    test_unit
  create      test/models/high_score_test.rb
  create      test/fixtures/high_scores.yml
  invoke  resource_route
   route    resources :high_scores
  invoke  scaffold_controller
  create    app/controllers/high_scores_controller.rb
  …

$ rake db:migrate

$ rails server

Ensuite, il suffit d’ouvrir son navigateur préféré pour découvrir les rudiments de son projet.

Par cet exemple, nous venons de voir à quel point il est facile de réaliser des bases d’application web. C’est pourquoi Ruby on Rails se prête particulièrement à la réalisation de POC !

Rails est modulaire

Il est possible de ne charger que les composants dont vous avez besoin pour votre application.

On peut par exemple se passer de l’ORM Active Record, en choisir un autre ou encore écrire ses propres requêtes SQL.

Pour ce faire, rendez-vous dans le fichier de configuration suivant :

# config/application.rb

# Retirer cette ligne et charger uniquement les composants nécessaires
require 'rails/all'

# Exemple :
require "action_controller/railtie"
require "action_mailer/railtie"

N’hésitez pas à découvrir notre Introduction à Rack pour en savoir plus !

Convention over configuration

C’est l’un des principes de base de Ruby on Rails !

Si cet état de fait peut paraître assez rigide, c’est justement l’idée inverse qui motive ce choix.

Il s’agit simplement d’appliquer des configurations de la même manière d’un projet à un autre.

L’idée est donc d’alléger la charge de travail du développeur en lui permettant de se focaliser sur les aspects métiers du projet, l’essentiel.

N’en déplaise à certains, la logique derrière l’utilisation de Gem est tout de même formidable, tout comme le versioning de migration de base de données avec Active Record !

Ruby

C’est fait en Ruby, donc c’est forcément bien !

Mine de rien, Ruby est un chouette langage (point de vue totalement subjectif), puisqu’il est simple et agréable à lire. De ce fait il est aussi plus simple de comprendre et de maintenir du code en Ruby.

Il faut toutefois considérer la qualité du code. On peut faire du Ruby parfaitement immonde ! Mais l’on retrouvera souvent une lecture du code relativement abordable.

Ruby on Rails est aussi moins rigide que la plupart des frameworks

Rails est un framework très flexible, voire un peu trop permissif. Serait-ce là l’un de ses plus gros défauts ?

Toutefois, sa souplesse permet à quiconque de poser rapidement les bases d’une application fonctionnelle. Elle permet facilement de mettre en place plusieurs langues sur son application grâce à I18n. Elle permet également d’implémenter de nouveaux composants via l’emploi de Gem, sans oublier un principe de base : DRY.

On constate néanmoins les limites dès que l’on souhaite concevoir une application monolithique qui soit (ou qui reste) maintenable avec Rails. Peut-être nous est-il nécessaire d’acquérir une approche différente, en pliant le framework à nos propres exigences par exemple.

Si ce sujet des applications monolithiques vous intéresse, je vous suggère cet article très intéressant sur l’architecture monolithique modulaire.

S’engager en réfléchissant préalablement à l’implémentation de la logique métier nécessite un effort supplémentaire dès l’origine d’un projet.

Néanmoins, cet effort peut se révéler payant à travers l’emploi de Ruby on Rails. Sa souplesse et sa simplicité permettent d’être agile, et d’ajouter rapidement de nouveaux composants à nos applications.

Reste à s’entendre sur une implémentation qui ne doit pas seulement convenir aux développeurs, mais qui se doit de respecter le vocabulaire et les attentes du métier.

De bons réflexes sont la clé du succès, et l’emploi de Rails nous autorise à prendre le temps de les remettre en question.

Outre ces aspects, pourquoi utiliser Rails en 2018 ?

Si l’on fait l’effort de prendre un peu de recul, on peut en déduire les affirmations suivantes concernant ce framework :

  • Il convient bien aux étudiants en informatique qui doivent concevoir rapidement des applications s’ils ne sont pas contraints par un langage (j’en parle en connaissance de cause) ;
  • Il convient parfaitement pour réaliser des POCs ;
  • Rails 5 permet notamment de créer rapidement une API ;
  • Il convient à la conception d’application web, dès lors qu’on fait l’effort de mettre en place des fondations solides. (cf. Pérégrinations vers une architecture découplée)

Qu’est-ce qu’il se passe ailleurs dans l’écosystème Ruby ?

Pendant ce temps, d’autres framework émergent, innovent, subsistent et gravitent autour de la planète Ruby.

Pour ne citer que les deux dont j’ai connaissance :

  • Sinatra : parfait pour réaliser de simples CRUD, pour un site lambda sans grande logique métier
  • Hanami : Si vous avez une volonté inébranlable d’architecturer vos applications, alors ce framework est fait pour vous

Pour aller plus loin, voici un top 10 des meilleurs frameworks Ruby.

Suite aux conversations avec le collègue de bureau qui ne jure que par ça, j’adresse une mention spéciale à Crystal dont on a déjà parlé dans un précédent article. N’hésitez surtout pas à découvrir ce projet, car le potentiel est très prometteur. Gestion de la concurrence, performances importantes, mais surtout cette volonté d’intégrer le Multithread… Que du bonheur !

Retour à la terre ferme

Ruby on Rails n’a pas dit son dernier mot !

Certes, les choix récents vers plus de flexibilité et davantage de conception monolithique semblent un peu trop… trop… pour beaucoup d’entre nous.

Mais il n’en reste pas moins un framework très agréable à utiliser au quotidien.

En réalité, si l’on voulait vraiment conclure, on ne parlerait pas seulement de Ruby on Rails, mais de l’ensemble des frameworks que l’on peut trouver sur le marché.

Il nous appartient, et nous appartiendra encore demain, de se poser les bonnes questions :

  • Avons-nous réellement besoin d’une usine à gaz pour notre projet ?
  • Combien devrions-nous allouer de temps à notre veille technologique ?
  • Possédons-nous les ressources nécessaires pour maintenir un projet dans cette technologie ?
  • Ce framework est-il adapté à ce projet ?
  • Avons-nous seulement besoin d’un framework pour ce projet ?
  • etc.

Finalement, il importe que chaque framework possède ses propres forces et faiblesses. Puisque chaque projet nécessite une attention particulière, on devrait toujours s’interroger sur la pertinence de l’utilisation d’un framework avant de l’adopter.

La question n’est donc plus de savoir si Ruby on Rails est encore populaire aujourd’hui, mais plutôt de s’intéresser à la manière de mettre nos projets sur les rails.


L’équipe Synbioz.
Libres d’être ensemble.

Articles connexes

Si le prélèvement à la source m'était conté

30/11/2018

Il était une fois, en l’an 2018, au cœur d’un joli pays nommé France, un peuple qui s’apprêtait à vivre un petit bouleversement. Son chef, qui était fort influençable, avait hérité de par son...

Elm Europe 2017

22/06/2017

Nous sommes de plus en plus nombreux à découvrir de nouvelles technologies et de nombreux langages de programmation. Chez Synbioz, nous tentons quotidiennement d’explorer cette Voie Lactée numérique...

Retour sur dotJS 2016

13/12/2016

Cette année, dotJS a failli ne pas pouvoir arriver car le théâtre prévu pour accueillir les quelques 1200 participant a brûlé 3 mois avant l’évènement. C’est finalement une autre salle qui a été...

Retour sur la Take Off 2016

02/11/2016

La Take Off renait avec une nouvelle équipe (mais soutenue par la précédente) pour une nouvelle édition très intéressante. Synbioz était à l’édition 2013 et voici un retour sur celle de 2016. Lire la...