Лучший способ довольно печатать хэш

У меня большой хэш с вложенными массивами и хешами. Я хотел бы просто распечатать его, чтобы он был "читабельным" для пользователя.

Я бы хотел, чтобы это было похоже на to_yaml - это довольно читаемое, но все же слишком технологичное.

В конечном итоге это будут конечные пользователи, которым необходимо прочитать эти куски данных, чтобы их нужно было отформатировать в чистоте.

Любые предложения?

4b9b3361
require 'pp'
pp my_hash

Используйте pp, если вам нужно встроенное решение и просто хотите разумные разрывы строк.

Используйте awesome_print, если вы можете установить драгоценный камень. (В зависимости от ваших пользователей вы можете использовать параметр index:false, чтобы отключить отображение индексов массива.)

187
ответ дан 13 янв. '12 в 0:35
источник

Если у вас JSON, я рекомендую JSON.pretty_generate(hash), потому что он проще, чем awesome_print, отлично выглядит в теге pre, и позволяет легко копировать с веб-страницы. (См. Также: Как я могу "красиво" отформатировать мой вывод JSON в Ruby on Rails?)

55
ответ дан 24 июля '12 в 7:12
источник

Другое решение, которое работает лучше для меня, чем pp или awesome_print:

require 'pry' # must install the gem... but you ALWAYS want pry installed anyways
Pry::ColorPrinter.pp(obj)
15
ответ дан 25 авг. '15 в 9:29
источник

Если у вас нет каких-либо причудливых действий gem, но есть JSON, эта строка CLI будет работать на хеш:

puts JSON.pretty_generate(my_hash).gsub(":", " =>")

#=>
{
  :key1 => "value1",

  :key2 => "value2",

  :key3 => "value3"
}
10
ответ дан 20 мая '16 в 12:22
источник

Используйте приведенные выше ответы, если вы печатаете пользователям.

Если вы хотите только распечатать его для себя в консоли, я предлагаю использовать pry gem вместо irb. Помимо красивой печати, у pry также много других функций (проверьте railscast ниже)

gem install pry

И проверьте этот railscast:

http://railscasts.com/episodes/280-pry-with-rails

3
ответ дан 06 июня '13 в 15:33
источник

Из всех драгоценных камней, которые я пробовал, show_data gem работал лучше для меня, теперь я широко использую его для регистрации хэша params в Rails почти все время

0
ответ дан 26 янв. '16 в 14:14
источник

Используя Pry, вам просто нужно добавить следующий код к вашему ~/.pryrc:

require "awesome_print"
AwesomePrint.pry!
0
ответ дан 20 янв. '15 в 20:08
источник

В Rails, массивы и хеши в Ruby имеют встроенные функции to_json. Я бы использовал JSON только потому, что он очень читаем в веб-браузере, например. Google Chrome.

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

Посмотрите функцию gsub для очень хорошего способа сделать это. Продолжайте играть с разными персонажами и разным количеством пробелов, пока не найдете то, что выглядит привлекательно. http://ruby-doc.org/core-1.9.3/String.html#method-i-gsub

-3
ответ дан 13 янв. '12 в 0:33
источник