Hi!
I am reading the excellent The Ruby Way. I most probably not understand correctly the following pieces:
[quote page=38]
With include, the module's methods become available as instance methods; with extend, they become available as class methods
[/quote]
I have written the following code example:
[code]
module ExampleModule
def moduleMethod
puts 'module method'
end
end
class IncludeModule
include ExampleModule
end
class ExtendModule
extend ExampleModule
end
im = IncludeModule.new
# IncludeModule.moduleMethod # this is correct
im.moduleMethod # module method becomes instance method
em = ExtendModule.new
ExtendModule.moduleMethod # module method becomes class method
em.moduleMethod # this is failing! WHY?
[/code]
As pointed above the em#moduleMethod is failing. Being a class method I expect it to be available also on every instance. What I wrongly understood?
Later I can read the following:
[quote page=275]
The extend method will mix a module into an object. The instance methods from the module become instance methods for the object.
[/quote]
Isn't this in contradiction with the first quote?
Please enlighten me.
:alex |.::the_mindstorm::.|