Réponses:
Peut-être:
puts variable.inspect
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 cela pp
était très utile dans ce cas, regardez ici - stackoverflow.com/questions/6501506/ruby-inspect-readability/…
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 chose print_r
, mais c'est toujours utile parfois.
>> "Hello".methods.sort
=> ["%", "*", "+", "<", "<<", "<=", "<=>", "==", "===", "=~", ">", ">=", "[]", "[]=", "__id__", "__send__", "all?", "any?", "between?", "capitalize", "capitalize!", "casecmp", "center", "chomp", "chomp!", "chop", "chop!", "class", "clone", "collect", "concat", "count", "crypt", "delete", "delete!", "detect", "display", "downcase", "downcase!", "dump", "dup", "each", "each_byte", "each_line", "each_with_index", "empty?", "entries", "eql?", "equal?", "extend", "find", "find_all", "freeze", "frozen?", "grep", "gsub", "gsub!", "hash", "hex", "id", "include?", "index", "inject", "insert", "inspect", "instance_eval", "instance_of?", "instance_variable_defined?", "instance_variable_get", "instance_variable_set", "instance_variables", "intern", "is_a?", "is_binary_data?", "is_complex_yaml?", "kind_of?", "length", "ljust", "lstrip", "lstrip!", "map", "match", "max", "member?", "method", "methods", "min", "next", "next!", "nil?", "object_id", "oct", "partition", "private_methods", "protected_methods", "public_methods", "reject", "replace", "respond_to?", "reverse", "reverse!", "rindex", "rjust", "rstrip", "rstrip!", "scan", "select", "send", "singleton_methods", "size", "slice", "slice!", "sort", "sort_by", "split", "squeeze", "squeeze!", "strip", "strip!", "sub", "sub!", "succ", "succ!", "sum", "swapcase", "swapcase!", "taguri", "taguri=", "taint", "tainted?", "to_a", "to_f", "to_i", "to_s", "to_str", "to_sym", "to_yaml", "to_yaml_properties", "to_yaml_style", "tr", "tr!", "tr_s", "tr_s!", "type", "unpack", "untaint", "upcase", "upcase!", "upto", "zip"]
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 un PG::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:
$foo = {:name => "Clem", :age => 43}
puts $foo.to_yaml
Retour
---
:age: 43
:name: Clem
(Est-ce que cela dépend du YAML
chargement d' un module? Ou est-ce généralement disponible?)
to_yaml
nécessite le chargement du modèle YAML. Il fait cependant partie de la bibliothèque standard de Ruby.
p object
Pour chaque objet, écrit directement obj.inspect suivi d'un retour à la sortie standard du programme.
Si vous recherchez uniquement les variables d'instance dans l'objet, cela peut être utile:
obj.instance_variables.map do |var|
puts [var, obj.instance_variable_get(var)].join(":")
end
ou en une ligne pour copier et coller:
obj.instance_variables.map{|var| puts [var, obj.instance_variable_get(var)].join(":")}
met foo.to_json
pourrait être utile car le module json est chargé par défaut
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 :
require 'json'
...
puts JSON.pretty_generate(JSON.parse(object.to_json))
object.attribute_names
# => ["id", "name", "email", "created_at", "updated_at", "password_digest", "remember_token", "admin", "marketing_permissions", "terms_and_conditions", "disable", "black_list", "zero_cost", "password_reset_token", "password_reset_sent_at"]
object.attributes.values
# => [1, "tom", "tom@tom.com", Tue, 02 Jun 2015 00:16:03 UTC +00:00, Tue, 02 Jun 2015 00:22:35 UTC +00:00, "$2a$10$gUTr3lpHzXvCDhVvizo8Gu/MxiTrazOWmOQqJXMW8gFLvwDftF9Lm", "2dd1829c9fb3af2a36a970acda0efe5c1d471199", true, nil, nil, nil, nil, nil, nil, nil]
undefined method 'attributes' for ...
object.attributes_name
n'a pas fonctionné, mais object.attributes
permet d'obtenir un bon hachage des clés et des valeurs. Cela m'a aidé, merci!
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.