Согласно Ruby Doc instance_methods
Возвращает массив, содержащий имена открытых и защищенных
методы экземпляра в приемнике. Для модуля это публичные
и защищенные методы; для класса они являются экземпляром (не
синглтон) методы. Если необязательный параметр имеет значение false, методы
любые предки не включены.
Я беру пример с официальной документацией.
module A
def method1()
puts "method1 say hi"
end
end
class B
include A #mixin
def method2()
puts "method2 say hi"
end
end
class C < B #inheritance
def method3()
puts "method3 say hi"
end
end
Посмотрим на вывод.
A.instance_methods(false)
=> [:method1]
A.instance_methods
=> [:method1]
B.instance_methods
=> [:method2, :method1, :nil?, :===, ...# ] # methods inherited from parent class, most important :method1 is also visible because we mix module A in class B
B.instance_methods(false)
=> [:method2]
C.instance_methods
=> [:method3, :method2, :method1, :nil?, :===, ...#] # same as above
C.instance_methods(false)
=> [:method3]