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, est-il possible d'insérer une rupture dans le code et d'afficher la valeur de la variable à l'écran (ou au journal)?Comment déterminer la valeur d'une variable de contrôleur lors de l'exécution dans Ruby on Rails?
Répondre
Oui. Le moyen le plus simple consiste à augmenter la valeur en tant que chaîne. Vous pouvez également installer le débogueur (gem install ruby-debug
), puis démarrez le serveur de développement avec l'indicateur --debugger
. Ensuite, dans votre code, appelez l'instruction debugger
.
À l'intérieur de l'invite du débogueur, vous avez plusieurs commandes, y compris p
pour imprimer la valeur d'une variable.
Mise à jour: Voici a bit more about ruby-debug.
Si vous avez une variable d'instance de contrôleur nommé @foo
, puis dans votre contrôleur, vous pouvez simplement faire quelque chose comme:
logger.debug "@foo is: #{@foo}"
De plus, vous pouvez générer la valeur dans votre modèle de vue à l'aide:
<%= debug @foo %>
Je préfère utiliser la méthode inspectent 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:
I. rapide et sale chemin:
raise @foo.inspect
dans votre contrôleur. Ou
<% raise @foo.inspect %>
à votre avis.
II. Enregistrement approprié à vous development.log
:
logger.debug "@foo == #{@foo.inspect}"
III. Full-fledged debugging:
Installez le débogueur (gem install ruby-debug
), puis démarrez le serveur de développement avec l'indicateur --debugger
. Ensuite, dans votre code, appelez l'instruction debugger
.
À l'intérieur de l'invite du débogueur, vous avez plusieurs commandes, y compris p
pour imprimer la valeur d'une variable.
L'exécution d'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 seulement besoin de voir la valeur d'une variable, vous essayez probablement de trouver un bogue dans votre code, et c'est ce à quoi sert un débogueur.
L'envoi des informations dans le journal de développement est plus lent que l'une des deux autres options ici si vous apprenez comment utiliser le débogueur (qui veut lire les fichiers journaux). Utilisez l'enregistreur pour la production, vous allez vouloir voir quelle était la valeur quand quelqu'un vous appelle et dit que tout est cassé.
Eh bien, je préfère généralement la sortie d'erreur standard
stderr.print de $ ("whatever")
Son simple et fait le travail.
- 1. Ruby on Rails - Variable dans une variable
- 2. Formulaire booléen Ruby on Rails
- 3. Ruby on Rails - Configuration de base du contrôleur sur Dreamhost
- 4. ruby on rails formulaire_pour
- 5. Ruby on Rails: current_page? problème lors de l'utilisation des actions
- 6. Action de transaction avec Ruby On Rails
- 7. Ruby on Rails: Comment joindre deux tables
- 8. Valider aucun chevauchement de routage lors de la création de nouvelles ressources dans Ruby on Rails
- 9. Ruby on rails racine de l'application
- 10. Ruby on Rails: Nouveau contrôleur pour les photos?
- 11. Téléchargement de fichiers dans Ruby on Rails
- 12. Ruby on Rails - paramètre tronquer
- 13. LocalJumpError (Ruby on Rails)
- 14. Recherche dans Ruby On Rails
- 15. Analyser dans Ruby (on Rails)
- 16. Ruby on Rails MVC Question
- 17. OCIError (ruby on rails)
- 18. Ruby on Rails Générateur de table HTML
- 19. Administration backend dans Ruby on Rails
- 20. Ruby on Rails: « find_create_by_user »
- 21. Ruby on Rails regex
- 22. Ruby on Rails d'installation
- 23. ruby on rails Problème SQLite
- 24. Ruby on Rails Actions help
- 25. Liste triable Ruby on Rails
- 26. Barre de progression Ruby on Rails
- 27. Comment tester l'application de chat dans Ruby on Rails?
- 28. Ruby on rails: problème de mémoire create_fixtures
- 29. Ruby on Rails et CruiseControl.rb
- 30. Ruby on Rails, détection Javascript