I'm having a hard time understanding why the following doesn't work:
module M1
def m1
p 'm1'
end
module ClassMethods
def m1c
p 'm1c'
end
end
def self.included base
base.extend ClassMethods
end
end
module M2
include M1
def m2
p 'm2'
end
end
class Foo
include M2
def hi
p 'hi'
end
end
Foo.new.hi => 'hi'
Foo.new.m1 => 'm1'
Foo.new.m2 => 'm2'
Foo.m1c => undefined method `m1c' for Foo:Class (NoMethodError)
All methods work as expected if I include M1 directly in Foo but it seems DRYer to include it in M2. Am I misunderstanding modules?