oop/extend_module.rb

tests/_examples/oop/extend_module.rb in the metorex repository.

module Namespace
end

module Namespace::Taggable
  def tag
    "tagged"
  end
end

class Direct
  extend Namespace::Taggable
end

puts Direct.tag
puts Direct.kind_of?(Namespace::Taggable)

anonymous = Class.new do
  extend Namespace::Taggable
end

puts anonymous.tag
puts anonymous.kind_of?(Namespace::Taggable)

single = Object.new
single.extend Namespace::Taggable
puts single.tag
puts single.kind_of?(Namespace::Taggable)
puts Object.new.kind_of?(Namespace::Taggable)

begin
  Object.new.extend(Class.new)
rescue TypeError => error
  puts error.class
end

puts Object.new.method(:extend).arity

Output:

tagged
true
tagged
true
tagged
true
false
TypeError
-1