respond_to?でメソッドがあるかを確認する

タイトルの通りです。

respond_toの書き方

class Foo
  def foo
    p 'foo'
  end

  private

  def private_foo
    p 'private foo'
  end
end

x = Foo.new
x.respond_to?(:foo)
=> true
x.respond_to?(:foo, true)
=> true
x.respond_to?(:private_foo)
=> false
x.respond_to?(:private_foo, true)
=> true

private methodは第二引数にtrueを渡さないと判定してくれないようです。

public_methodはどっちでも反応しますね。

以上です。