Как вывести поля объекта на консоль?

Когда я выполняю простой 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

Ruby doc для p.

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)

ставит ФОО.to_json

может пригодиться с модуля JSON загружается по умолчанию

Комментарии (1)

Если вы хотите распечатать уже отступом в JSON:

require 'json'
...
puts JSON.pretty_generate(JSON.parse(object.to_json))
Комментарии (0)

Я наткнулся на эту ветку, потому что я искал что-то подобное. Мне нравятся ответы и они дали мне некоторые идеи, чтобы я проверил .метод to_hash и работал очень хорошо для дела использовать слишком. соо:

объект.to_hash

Комментарии (0)
object.attributes_name

=> [и"ИД" В, С "именем", "по почте" и "Ну created_at" и "Ну updated_at-то", то "password_digest" и "Ну remember_token-то", то "админ" и "Ну marketing_permissions" и "Ну terms_and_conditions-то", то "отключить" и "Ну black_list и""Ну zero_cost" и "Ну password_reset_token" и "Ну password_reset_sent_at на"]

object.attributes.values

=> [1, с "Томь" и "Ну tom@tom.com", вт, 02 июня 2015 00:16:03 по UTC +00:00, вт, 02 июня 2015 00:22:35 по UTC +00:00, " по$2А$10$gUTr3lpHzXvCDhVvizo8Gu/MxiTrazOWmOQqJXMW8gFLvwDftF9Lm" и "Ну 2dd1829c9fb3af2a36a970acda0efe5c1d471199" ну, правда, Нил, Нил, Нил, Нил, Нил, Нил, Нил]

Комментарии (3)