Ruby Examples > Module Mixin

#---Module Mixin---

Ruby doesn’t support multiple inheritance.
A ruby class can only inherit from one parent class.
But it can get the benefit of inheriting from multiple
‘entities’ through this concept of “mixing-in one or more modules”.
Modules also act as namespace for the methods and constants defined in them, allowing you to sandbox them safely and also put them in separate files and require them as needed.

module LifeSupport
  def water?
    true
  end
  def oxygen?
    true
  end
end
module RingSupport
  def rings?
    true
  end
end

This module isn’t included in the NewWorld class below.

module StormSupport
  def minimum_wind_speed_in_miles_per_hour
    1200
  end
end

Modules are embedded into a class using the include keyword.
All the methods in the included modules are available to the object created using this class as instance methods.

class NewWorld
  include LifeSupport
  include RingSupport
end
w = NewWorld.new
p w.water? # => "true"
p w.rings? # => "true"
p w.respond_to?(:minimum_wind_speed_in_miles_per_hour)
## => "false"
p w.minimum_wind_speed_in_miles_per_hour
## fails with the NoMethodError exception

Next example: Return Values.