オブジェクトのフィールドをコンソールに出力するにはどうすればよいですか?

単純なRubyスクリプトを実行しているとき、オブジェクトのフィールドをコンソールにダンプする最も簡単な方法は何でしょうか。

PHPの print_r() に似たようなもので、配列も扱えるものを探しています。

ソリューション

可能性がある:

puts variable.inspect
解説 (5)

オブジェクトのメソッドの配列を返す methods メソッドの使い道が見つかるかもしれません。これは print_r と同じではありませんが、時折役に立ちます。


>> "Hello".methods.sort
=> ["%", "*", "+", "
解説 (3)

to_yamlメソッドは時々役立つようです:

$foo = {:name => "Clem", :age => 43}

puts $foo.to_yaml

戻る。

--- 
:age: 43
:name: Clem

(これは、ロードされている一部の「YAML」モジュールに依存しますか?? または、通常はそれが利用可能でしょうか?)。

解説 (2)
p object

p`のRubyドキュメント

p(*args) public となります; 各オブジェクトについて、obj.inspectに続いて直接書き込みます。 に改行を入れて、プログラムの標準出力に出力します。

解説 (3)

オブジェクト内のインスタンス変数のみを探している場合、これは役立つ場合があります。

obj.instance_variables.map do |var|
  puts [var, obj.instance_variable_get(var)].join(":")
end

またはコピーと貼り付けのワンライナーとして:

obj.instance_variables.map{|var| puts [var, obj.instance_variable_get(var)].join(":")}
解説 (0)

foo.to_jsonを置きます。

jsonモジュールはデフォルトでロードされるため、重宝する場合があります。

解説 (1)

すでにインデントされたJSON を印刷したい場合:

require 'json'
...
puts JSON.pretty_generate(JSON.parse(object.to_json))
解説 (0)

似たようなものを探していたので、このスレッドに出くわしました。 私は応答が好きで、彼らは私にいくつかのアイデアを与えたので、.to_hashメソッドをテストし、ユースケースでも本当にうまくいきました。 soo:

object.to_hash

解説 (0)
object.attributes_name

=> ["id"、 "name"、 "email"、 "created_at"、 "updated_at"、 "password_digest"、 "remember_token"、 "admin"、 "marketing_permissions"、 "terms_and_conditions"、 " disable"、 " black_list_cost"、"、"

object.attributes.values

=> [1、 "tom"、 "tom@tom.com"、火、2015年6月2日00:16:03 UTC + 00:00、火、02 2015年6月00:22:35 UTC + 00:00、 "$ 2a $ gUTr3lp

解説 (3)