Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

Object#public_methodsに偽の値を渡すと、スーパークラス由来のメソッドを除外してくれる

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

などというクラスがあった場合、何もつけずにpublic_methodsをやると
198個(awesome_printのモンキーパッチを含む)のメソッドが出てきます。

Hoge.new("").public_methods.size
#198

Hoge.new("").public_methods.include?(:method_missing)
#true

ここで、引数に偽の値(たとえばfalse)を与えると、
自身のメソッドのみを出力するようになります

Hoge.new("").public_methods(false)
[
    [0] method_missing(name, *args, &blk) Hoge
]