Ruby Language Modules A simple mixin with include


module SomeMixin
  def foo
    puts "foo!"

class Bar
  include SomeMixin
  def baz
    puts "baz!"

b =
b.baz         # => "baz!"         # => "foo!"
# works thanks to the mixin

Now Bar is a mix of its own methods and the methods from SomeMixin.

Note that how a mixin is used in a class depends on how it is added:

  • the include keyword evaluates the module code in the class context (eg. method definitions will be methods on instances of the class),
  • extend will evaluate the module code in the context of the singleton class of the object (methods are available directly on the extended object).