Bye Bye Moore

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

pry#show-sourceは自前定義クラスやモンキーパッチの大元を見に行くことができる

…あたりまえと言えば、あたりまえなのですが…
以前記事を書いたshow-sourceはメソッド以外にも、クラスを見にくこともできます。

pry上で次のようなクラスを定義したとします。

class Hoge
  def initialize(val)
    val.to_s
  end
  def method_missing(name, *args, &blk)
    42
  end
end

ここで、show-sourceでクラス名を指定してあげると…

show-source Hoge

From: (pry) @ line 1:
Class name: Hoge
Number of lines: 8

class Hoge
  def initialize(val)
    val.to_s
  end
  def method_missing(name, *args, &blk)
    42
  end
end

といった感じで実装を見ることができます。

モンキーパッチの大元を見に行くことも可能です。
わざわざモンキーパッチである旨まで書いてくれます。親切ですね

show-source String

From: /Users/shuzo_kino/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/awesome_print-1.6.1/lib/awesome_print/core_ext/string
.rb @ line 6:
Class name: String
Number of monkeypatches: 3. Use the `-a` option to display all available monkeypatches
Number of lines: 26

class String
  #
  # ANSI color codes:
  #   \e => escape
  #   30 => color base
  #    1 => bright
  #    0 => normal
  #
  # For HTML coloring we use <kbd> tag instead of <span> to require monospace
  # font. Note that beloved <tt> has been removed from HTML5.
  #
  %w(gray red green yellow blue purple cyan white).zip(
  %w(black darkred darkgreen brown navy darkmagenta darkcyan slategray)).each_with_index do |(color, shade), i|
    define_method color do |*html|
      html[0] ? %Q|<kbd style="color:#{color}">#{self}</kbd>| : "\e[1;#{30+i}m#{self}\e[0m"
    end
#:以下略

また、指示通り

show-source String -a

とやってあげると、他の適用もとを含んだ一覧(今回は合計三つ)を表示してくれます。