Déboguer une application Ruby on Rails

Sébastien Carceles
Dev on Rails
Published in
4 min readAug 14, 2018

Parfois un programme ne se comporte pas comme on l’espérait. Pour essayer de comprendre d’où vient le problème, on se retrouve assez vite à mettre de la log dans tous les sens, à faire des essais / erreurs et finalement à s’arracher les cheveux.

Heureusement, le débogage est là pour nous aider. Il permet d’exécuter le programme pas à pas, de s’arrêter sur chaque ligne pour évaluer l’état des variables, voir les modifications et finalement, comprendre ce qui va de travers.

Le mode debug peut changer votre vie. Si si.

Avoir un IDE qui permet de déboguer son code Ruby est donc indispensable pour résoudre rapidement les problèmes, sans y passer ses nuits.

Configuration

Avec Visual Studio Code, c’est possible avec (naturellement) l’extension Ruby. Assurez-vous de l’avoir installée au préalable, et lisez notre article sur les extensions pour le développement Ruby on Rails si besoin.

Ensuite, conformément à la documentation de l’extension, installez les deux gems suivantes directement avec le terminal intégré de VSCode (Ctrl / Cmd + ` pour l’ouvrir) :

  • gem install ruby-debug-ide
  • gem install debase

Puis ouvrez la vue debug (dans la barre latérale, ou Ctrl / Cmd + Shift + D). Au sein de celle-ci, créez le fichier de configuration launch.json grâce à la petite roue crantée. Vous choisirez ensuite l’environnement “Ruby”, bien entendu.

La vue debug de VSCode permet de créer le fichier des configurations, d’en choisir une et de l’exécuter

Dans les configurations générées, celles qui nous intéressent en particulier sont :

  • Rails server qui permet d’exécuter le serveur en mode debug
  • RSpec — all et RSpec — active spec file only qui permettent, respectivement, d’exécuter toute la suite de tests ou seulement le fichier actif en mode debug

Serveur Rails

Pour faire le test, dans le menu déroulant de la capture ci-dessus, choisissez “Rails server” puis appuyez sur la flèche verte pour le démarrer.

Vous pouvez maintenant mettre un point d’arrêt dans votre code, par exemple dans un contrôleur, en cliquant à gauche des numéros de ligne. Cela vous mettra un point rouge : c’est un point d’arrêt. Lorsque cette ligne sera exécutée, le code sera mis à l’arrêt et le débogueur vous permettra de prendre le contrôle.

Il suffit de cliquer à gauche pour mettre un point d’arrêt

Faites le test : ouvrez votre navigateur à l’adresse qui va exécuter votre code, là où vous avez mis un point d’arrêt. Dès que le code est exécuté, VSCode repasse au premier plan et vous donne la main, vous permettant de passer au point d’arrêt suivant, d’avancer pas à pas, de descendre ou de remonter d’un niveau.

Les boutons de contrôle pour avancer pas à pas

Tests

Pour déboguer une suite de test, c’est pareil ! Prenez simplement soin de sélectionner la bonne configuration dans le menu déroulant.

Notez toutefois que vous aurez peut-être besoin de modifier les arguments program et args de la configuration si vous utilisez un autre framework que RSpec.

Les outils

Une fois en mode debug, vous disposez de plusieurs outils pour comprendre exactement dans quel état se trouve le programme. Tout se passe dans la barre latérale.

À commencer par le panneau Variables, qui montre les variables locales et les variables globales :

Ensuite, vous pouvez sélectionner n’importe que bout de code pour l’évaluer ou pour l’espionner (d’un clic droit), ce qui vous permet de garder un oeil sur son état au fil de l’exécution.

La pile des appels permet d’avoir une vue sur tous les threads en cours d’exécution et en particulier sur le thread arrêté par votre point d’arrêt. Dans celui-ci, vous pouvez consulter la pile des appels. Utile pour mieux comprendre le contexte courant.

Enfin le panneau des points d’arrêt permet de les activer / désactiver sans avoir à les supprimer.

Avec le débogueur de VSCode, associé à l’extension Ruby, vous voila paré pour résoudre n’importe quel bug dans votre application Ruby on Rails.

Découvrez la version vidéo de cet article :

Apprenez Ruby on Rails FACILEMENT et RAPIDEMENT grâce à des ressources en français sur Dev on Rails. Suivez-vous :

--

--