2021-08-23 Ruby の module/class に定義されたメソッドを取得
その moudle or class に定義されたメソッドって何があるんだっけ?ってときに便利。
Module#instance_methods (Ruby 3.0.0 リファレンスマニュアル)
class Foo
private; def private_foo() end
protected; def protected_foo() end
public; def public_foo() end
end
# あるクラスのインスタンスメソッドの一覧を得る
p Foo.instance_methods(false)
p Foo.public_instance_methods(false)
p Foo.private_instance_methods(false)
p Foo.protected_instance_methods(false)
# [:protected_foo, :public_foo]
# [:public_foo]
# [:private_foo]
# [:protected_foo]
Object#methods (Ruby 3.0.0 リファレンスマニュアル)
class Parent
private; def private_parent() end
protected; def protected_parent() end
public; def public_parent() end
end
class Foo < Parent
private; def private_foo() end
protected; def protected_foo() end
public; def public_foo() end
end
obj = Foo.new
class << obj
private; def private_singleton() end
protected; def protected_singleton() end
public; def public_singleton() end
end
# あるオブジェクトの応答できるメソッドの一覧を得る。
p obj.methods(false)
p obj.public_methods(false)
p obj.private_methods(false)
p obj.protected_methods(false)
# 実行結果
# [:protected_singleton, :public_singleton]
# [:public_singleton, :public_foo]
# [:private_singleton, :private_foo]
# [:protected_singleton, :protected_foo]