Ruby オブジェクトまたはクラスに指定したメソッドがあるか調べる


これいつも忘れるので記録しておく。メタデータからオブジェクトが定義される時にいつも困る。

オブジェクト

obj.respond_to?(:method_name)

クラス

ClassName.method_defined?(:method_name)
private method

使うことはあまり無いと思うが、privateなメソッドに対しては、調べ方が少し違うので注意。

obj.respond_to?(:method_name, true)
ClassName.private_method_defined?(:method_name)