해시를 예쁘게 인쇄하는 가장 좋은 방법 큰 해시가 있습니다. 간단히 인쇄하여 사용자가

중첩 배열과 해시가있는 큰 해시가 있습니다. 간단히 인쇄하여 사용자가 읽을 수 있도록하고 싶습니다.

나는 to_yaml과 같은 것이기를 원합니다-꽤 읽을 수 있지만 여전히 너무 기술적으로 보입니다.

궁극적으로 이러한 데이터 청크를 읽어야하는 최종 사용자가되므로 형식을 명확하게 지정해야합니다.

어떤 제안?



답변

require 'pp'
pp my_hash

pp내장 솔루션이 필요하고 합리적인 줄 바꿈을 원할 경우 사용하십시오 .

gem을 설치할 수 있으면 awesome_print를 사용하십시오 . (사용자에 따라 index:false옵션을 사용하여 배열 인덱스 표시를 해제 할 수 있습니다 .)


답변

JSON이있는 JSON.pretty_generate(hash)경우 awesome_print 보다 간단 하고 pre태그 가 멋지게 보이고 웹 페이지에서 쉽게 복사 할 수 있기 때문에 권장 합니다. (또한 Ruby on Rails에서 JSON 출력을 “예쁜”형식으로 지정하려면 어떻게해야합니까? )


답변

보다 나를 더 잘 작동 또 다른 해결책 pp이나 awesome_print:

require 'pry' # must install the gem... but you ALWAYS want pry installed anyways
Pry::ColorPrinter.pp(obj)


답변

멋진 gem 작업은 없지만 JSON이있는 경우이 CLI 행은 해시에서 작동합니다.

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

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

  :key2 => "value2",

  :key3 => "value3"
}


답변

사용자에게 인쇄하는 경우 위의 답변을 사용하십시오.

콘솔에서 직접 인쇄하려면 irb 대신 pry gem을 사용하는 것이 좋습니다. 예쁜 인쇄 외에도 pry는 다른 많은 기능을 가지고 있습니다 (아래의 레일 캐스트 확인)

보석 설치

이 레일 캐스트를 확인하십시오.

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


답변

제 키가 제정신임을 믿는 경우 json으로 쉽게 할 수 있습니다.

JSON.pretty_generate(a: 1, 2 => 3, 3 => nil).
  gsub(": null", ": nil").
  gsub(/(^\s*)"([a-zA-Z][a-zA-Z\d_]*)":/, "\\1\\2:"). # "foo": 1 -> foo: 1
  gsub(/(^\s*)(".*?"):/, "\\1\\2 =>") # "123": 1 -> "123" => 1

{
  a: 1,
  "2" => 3,
  "3" => nil
}


답변

Pry를 사용하면 ~ / .pryrc에 다음 코드를 추가하면됩니다.

require "awesome_print"
AwesomePrint.pry!