onrails.org home

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.
Fork me on GitHub