106 votes

Est-il un print_r ou var_dump équivalent en Ruby / Ruby on Rails?

Je suis à la recherche d'un moyen de faire un dump de la structure d'un objet, semblable à des fonctions PHP print_r et var_dump pour des raisons de débogage.

130voto

dbr Points 66401

L' .inspect méthode d'un objet doit format est bien pour l'affichage, il suffit de faire..

<%= theobject.inspect %>

L' .methods méthode peut également être utile:

<%= theobject.methods.inspect %>

Il peut aider à mettre en <pre> tags, selon les données

65voto

Artem Russakovskii Points 7341

Vues:

DebugHelper's debug(object)

Dans les contrôleurs, les modèles et le code:

puts YAML::dump(object)

Source

8voto

ujh Points 1722

Dans une vue, vous pouvez utiliser <%= debug(yourobject) %> qui va générer un fichier YAML affichage de vos données. Si vous voulez quelque chose dans votre journal, vous devez utiliser logger.debug yourobject.inspect.

6voto

Marcin Urbanski Points 925

Vous pouvez également utiliser YAML::dump abrégée (y) en vertu de la console Rails:

>> y User.first
--- !ruby/object:User 
attributes: 
  created_at: 2009-05-24 20:16:11.099441
  updated_at: 2009-05-26 22:46:29.501245
  current_login_ip: 127.0.0.1
  id: "1"
  current_login_at: 2009-05-24 20:20:46.627254
  login_count: "1"
  last_login_ip: 
  last_login_at: 
  login: admin
attributes_cache: {}

=> nil
>>

Si vous voulez juste aperçu de quelques-uns de la chaîne de contenu, essayez d'utiliser lever (par exemple dans les modèles, les contrôleurs ou de quelque autre endroit inaccessible). Vous obtenez la backtrace:)

>> raise Rails.root
RuntimeError: /home/marcin/work/github/project1
    from (irb):17
>>

Aussi je vous encourage vraiment à essayer ruby-debug:

Il est incroyablement utile!

3voto

Mikoangelo Points 63

Si vous voulez juste les données pertinentes à afficher sur la sortie standard (la borne de sortie si vous êtes en cours d'exécution à partir de la ligne de commande), vous pouvez utiliser p some_object.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X