Ruby on Rails: довольно печатная версия для переменной .hash_set.inspect... есть способ довольно печатать .inpsect в консоли?

Я нахожу, что делаю много упражнений в моем функциональном тестировании, чтобы убедиться, что я знаю, как форматируются данные... но хэши трудно читать, когда нет новых строк после каждой записи в хэш-объекте, Есть ли вообще, может быть, драгоценный камень?, Для хороших хешей печати?

Чтобы это выглядело примерно так:

{ 
  entry1 => { 
              entrey1.1 => 1,
              entry1.2 => 3
            },
  entry2 => 3
}

вместо: { entry1 => { entrey1.1 => 1, entry1.2 => 3}, entry2 => 3 }

Спасибо!

Ответ 1

вы можете использовать жемчужину awesome_print для этого.

https://github.com/michaeldv/awesome_print

require 'awesome_print' # if you like to have it in irb by default, add it to your irbrc
>> ap({:a => 1, :b => [1,2,3], :c => :d})
{
    :b => [
        [0] 1,
        [1] 2,
        [2] 3
    ],
    :a => 1,
    :c => :d
}

btw вместо puts object.inspect вы также можете просто использовать p object, который вызывает проверку объекта перед его печатью. другой способ печати объектов немного лучше, чем по умолчанию - использовать pp из ruby ​​stdlib (http://ruby-doc.org/stdlib/libdoc/pp/rdoc/index.html)

Ответ 2

Вы всегда можете переопределить Hash#inspect в своем .irbrc файле, если хотите, отформатировать их любым способом. Это повлияет только на вашу интерактивную среду. Альтернатива заключается в том, чтобы выразить их как YAML, который часто читается. Например:

def y(object)
  puts object.to_yaml
  return
end

Таким образом, вы можете запускать y для объектов, как вы могли бы p сегодня.