Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

awesome_printでRubyオブジェクトをさらに見やすくする(その1)

awesome_printはREPL(IrbとかPry)においてRubyオブジェクトを見やすくするgemです。
有名どこはpやppがありますね。

導入法

$ gem install awesome_print

実際のところ

まずは、pの表示を見てましょう。

p [ false, 42, %w(forty two), { :now => Time.now, :class => Time.now.class, :distance => 42e42 } ]
[false, 42, ["forty", "two"], {:now=>2015-01-30 23:38:07 +0900, :class=>Time, :distance=>4.2e+43}]

そして、お馴染みpp。さっきよりはだいぶマシになりました。

pp [ false, 42, %w(forty two), { :now => Time.now, :class => Time.now.class, :distance => 42e42 } ]
[false,
 42,
 ["forty", "two"],
 {:now=>2015-01-30 23:37:50 +0900, :class=>Time, :distance=>4.2e+43}]

…さて、awesome_printだとどうなるのでしょうか?
コマンドはAwesome_Printでapです。

ap [ false, 42, %w(forty two), { :now => Time.now, :class => Time.now.class, :distance => 42e42 } ]
[
    [0] false,
    [1] 42,
    [2] [
        [0] "forty",
        [1] "two"
    ],
    [3] {
             :now => 2015-01-30 23:37:59 +0900,
           :class => Time < Object,
        :distance => 4.2e+43
    }
]

デフォルトなのに、ネスト数やらクラス構造*1まで出てますね…??
…実際コンソールに出る文字はこちら
f:id:shuzo_kino:20150130234353p:plain
色ついてるやん(驚愕

…と、このようにawesome_printは表示をトンデモナイ水準に引き上げます。

*1:ちなみに、表示されるのは一個上の親クラスまでです。