Déboguer une application Ruby on Rails
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.
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.
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 debugRSpec — all
etRSpec — 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.
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.
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 :