Lorsque j'exécute un simple script Ruby, quelle est la façon la plus simple de vider les champs d'un objet sur la console?
Je cherche quelque chose de similaire à PHP print_r()
qui fonctionnera également avec les tableaux.
ruby
printf-debugging
roryf
la source
la source
inspect
méthode à votre classe vous permet de définir la façon dont les attributs de la classe sont affichés, plutôt que de s'appuyer sur la sortie par défaut. Beaucoup de classes ne l'implémentent pas bien, mais cela peut être très utile lors du débogage. Ruby reviendrato_s
s'il ne trouve pas de méthode d'inspection.server = TCPServer.new 0 ; puts server.inspect #<TCPServer:fd 9> => nil
. cela ne fonctionnera pas pour la plupart des objets complexes.var_dump
équivalent php en rubis, j'ai trouvé que celapp
était très utile dans ce cas, regardez ici - stackoverflow.com/questions/6501506/ruby-inspect-readability/…p object
c'est un alias pourputs object.inspect
Vous pourriez trouver une utilisation pour la
methods
méthode qui renvoie un tableau de méthodes pour un objet. Ce n'est pas la même choseprint_r
, mais c'est toujours utile parfois.la source
instance_methods
de la classe en question pour obtenir les méthodes qui sont uniques:(String.instance_methods - Object.instance_methods).sort
.methods.sort
est très utile. Existe-t-il un moyen «intelligent» de montrer rapidement des méthodes qui sont (vaguement) uniques à cet objet particulier? Par exemple, une méthode comme celle-ci.to_s
peut apparaître souvent, ce n'est donc pas très utile, mais certaines peuvent être très utiles pour connaître certaines méthodes pour certains objets. Surtout dans les cas qui ne sont pas évidents. Existe-t-il un moyen de les obtenir rapidement? (cas d'espèce, j'ai unPG::Result
objet, et je veux évaluer rapidement les méthodes probables que je pourrais éventuellement trouver utiles.La
to_yaml
méthode semble parfois utile:Retour
(Est-ce que cela dépend du
YAML
chargement d' un module? Ou est-ce généralement disponible?)la source
to_yaml
nécessite le chargement du modèle YAML. Il fait cependant partie de la bibliothèque standard de Ruby.Doc Ruby pour
p
.la source
Si vous recherchez uniquement les variables d'instance dans l'objet, cela peut être utile:
ou en une ligne pour copier et coller:
la source
met foo.to_json
pourrait être utile car le module json est chargé par défaut
la source
to_json
n'est pas chargé par défaut en 1.8.7 ou 1.9.2.Si vous souhaitez imprimer un JSON déjà en retrait :
la source
Je suis tombé sur ce fil parce que je cherchais quelque chose de similaire. J'aime les réponses et ils m'ont donné quelques idées, j'ai donc testé la méthode .to_hash et j'ai très bien fonctionné pour le cas d'utilisation. soo:
object.to_hash
la source
la source
undefined method 'attributes' for ...
object.attributes_name
n'a pas fonctionné, maisobject.attributes
permet d'obtenir un bon hachage des clés et des valeurs. Cela m'a aidé, merci!