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]