module Foo def foo :foo end end class Bar include Foo def bar :bar end end class Buz extend Foo def buz :buz end end # Bar Instance methods p Bar.new.class.instance_methods.grep(/bar|foo/) # => [:bar, :foo] # Buz Instance methods p Buz.new.class.instance_methods.grep(/buz|foo/) # => [:buz] # Buz Class methods p Buz.new.class.methods.grep(/foo|buz/) # => [:foo] # a list of modules and classes p Bar.ancestors # => [Bar, Foo, Object, Kernel, BasicObject] # singleton methods p Bar.singleton_methods # => [] # a list of modules and classes p Buz.ancestors # => [Buz, Object, Kernel, BasicObject] # singleton methods p Buz.singleton_methods # => [:foo]