Когда я запускаю простой скрипт на Ruby, какой самый простой способ вывести на консоль поля объекта?
Я ищу что-то похожее на PHP, print_r()
которое будет работать и с массивами.
ruby
printf-debugging
roryf
источник
источник
inspect
метода к вашему классу позволяет вам определять способ отображения атрибутов класса, а не полагаться на вывод по умолчанию. Многие классы не реализуют это хорошо, но это может быть очень полезно при отладке. Руби отступит,to_s
если не сможет найти метод проверки.server = TCPServer.new 0 ; puts server.inspect #<TCPServer:fd 9> => nil
, это не будет работать для большинства сложных объектов.var_dump
эквивалента php в ruby, я обнаружил, чтоpp
в этом случае он очень полезен, посмотрите здесь - stackoverflow.com/questions/6501506/ruby-inspect-readability/…p object
это псевдоним дляputs object.inspect
Вы можете найти применение для
methods
метода, который возвращает массив методов для объекта. Это не то же самоеprint_r
, но иногда полезно.источник
instance_methods
из рассматриваемого класса, чтобы получить уникальные методы:(String.instance_methods - Object.instance_methods).sort
.methods.sort
это очень полезно. Есть ли «умный» способ быстро показать методы, которые (неопределенно) уникальны для этого конкретного объекта? Например, такой метод.to_s
может часто появляться, поэтому он не так уж и полезен, но некоторым может быть очень полезно узнать об определенных методах для определенных объектов. Особенно в случаях, которые не очевидны. Есть ли способ быстро получить это? (PG::Result
Этот
to_yaml
метод иногда кажется полезным:возвращается
(Зависит ли это от того, какой
YAML
модуль загружается? Или это обычно будет доступно?)источник
to_yaml
требует загрузки модели YAML. Это часть стандартной библиотеки Ruby.Рубин док для
p
.источник
Если вы ищете только переменные экземпляра в объекте, это может быть полезно:
или как однострочник для копирования и вставки:
источник
ставит foo.to_json
может пригодиться, так как модуль json загружен по умолчанию
источник
to_json
не загружается по умолчанию в 1.8.7 или 1.9.2.Если вы хотите напечатать уже с отступом JSON :
источник
Я наткнулся на эту тему, потому что я искал что-то подобное. Мне нравятся ответы, и они дали мне некоторые идеи, поэтому я протестировал метод .to_hash и работал очень хорошо для варианта использования. Су:
object.to_hash
источник
источник
undefined method 'attributes' for ...
object.attributes_name
не работает, ноobject.attributes
делает, чтобы получить хороший хэш ключей и значений. Это помогло мне, спасибо!