Module Tidbits
I always forget what including versus extending a Module, so here's a little reminder for myself.
module UsefulMethods
def some_cool_thing
1 + 1 == 0
end
end
class IncludeUsefulInstanceMethods
include UsefulMethods
end
class IncludeUsefullClassMethods
extend UsefulMethods
end
puts IncludeUsefulInstanceMethods.new.some_cool_thing # => false
puts IncludeUsefullClassMethods.some_cool_thing # => false
So, including a module basically shoves the module's methods into the class as instance methods, while extending a module puts them in as class methods.
That's it. By the way, this was inspired by Dave Thomas' metaprogramming talk at the Rails Edge Studio in Denver.