module SomeMixin def foo puts "foo!" end end class Bar include SomeMixin def baz puts "baz!" end end b = Bar.new b.baz # => "baz!" b.foo # => "foo!" # works thanks to the mixin
Bar is a mix of its own methods and the methods from
Note that how a mixin is used in a class depends on how it is added:
includekeyword evaluates the module code in the class context (eg. method definitions will be methods on instances of the class),
extendwill evaluate the module code in the context of the singleton class of the object (methods are available directly on the extended object).