Whenever I try to extend a ruby module, I lose the module methods. Neither include nor extend will do this. Consider the snippet:
module A
def self.say_
I don't like everyone using self.included. I have simpler solution:
module A
module ClassMethods
def a
'a1'
end
end
def a
'a2'
end
end
module B
include A
module ClassMethods
include A::ClassMethods
def b
'b1'
end
end
def b
'b2'
end
end
class C
include B
extend B::ClassMethods
end
class D < C; end
puts D.a
puts D.b
puts D.new.a
puts D.new.b