Comment déterminer la valeur d'une variable de contrôleur lors de l'exécution dans Ruby on Rails ?

StackOverflow https://stackoverflow.com/questions/60720

Question

Quelle est la meilleure façon pour moi de déterminer la valeur d’une variable de contrôleur pendant l’exécution ?

Par exemple, existe-t-il un moyen d'insérer une rupture dans le code et de faire apparaître la valeur de la variable à l'écran (ou dans le journal) ?

Était-ce utile?

La solution

Oui.Le moyen le plus simple consiste à augmenter la valeur sous forme de chaîne.Ainsi: raise @foo.to_s

Ou bien, vous pouvez installer le débogueur (gem install ruby-debug), puis démarrez le serveur de développement avec le --debugger drapeau.Ensuite, dans votre code, appelez le debugger instruction.

Dans l'invite du débogueur, vous disposez de nombreuses commandes, notamment p pour imprimer la valeur d'une variable.

Mise à jour: voici un peu plus sur Ruby-debug.

Autres conseils

Si vous disposez d'une variable d'instance de contrôleur nommée @foo, alors dans votre contrôleur, vous pouvez simplement faire quelque chose comme :

logger.debug "@foo is: #{@foo}"

De plus, vous pouvez afficher la valeur dans votre modèle de vue en utilisant :

<%= debug @foo %>

Je préfère utiliser la méthode inspect comme ceci :

raise @foo.inspect

Il contient plus d'informations que to_s, comme les valeurs d'attribut.

Résumé de Jordi Bunster, John Topley et Jaryl :

JE.Voie rapide et sale :

raise @foo.inspect

dans votre contrôleur.Ou

<% raise @foo.inspect %>

à votre avis.

II.Connexion appropriée pour vous development.log:

logger.debug "@foo == #{@foo.inspect}"

III. Débogage complet:

Installez le débogueur (gem install ruby-debug), puis démarrez le serveur de développement avec le --debugger drapeau.Ensuite, dans votre code, appelez le debugger instruction.

Dans l'invite du débogueur, vous disposez de nombreuses commandes, notamment p pour imprimer la valeur d'une variable.

Déclencher une exception est le moyen le plus rapide si vous avez juste besoin de regarder une valeur, mais cela vaut la peine d'apprendre à utiliser correctement le débogueur.Il est rare que vous ayez uniquement besoin de voir la valeur d'une variable, vous essayez probablement de trouver un bug dans votre code, et c'est à cela que sert un débogueur.

L'envoi des informations au journal de développement est plus lent que l'une ou l'autre des deux autres options proposées jusqu'à présent si vous apprenez à utiliser le débogueur (qui souhaite lire les fichiers journaux).Utilisez l'enregistreur pour la production, vous voudrez voir quelle était la valeur lorsque quelqu'un vous appellera et vous dira que tout est cassé.

Eh bien, je préfère généralement la sortie d'erreur standard

$stderr.print("peu importe")

C'est simple et fait le travail.

  1. Ajouter mouvements de levier vers Gemfile : gem 'pry-moves'
  2. Insérer binding.pry où tu veux t'arrêter
  3. Tapez le nom de la variable pour voir sa valeur

Continuez ensuite en tapant c, passez à la ligne suivante avec n ou effectuez d'autres actions de débogage jusqu'à ce que vous résolviez le problème.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top