A module can be included in a class to share reusable methods.

Modules and Mixins

modules_mixins.rb
module Trackable
  def tracking_label
    "tracking #{tracking_id}"
  end
end

class Shipment
  include Trackable

  def initialize(tracking_id)
    @tracking_id = tracking_id
  end

  def tracking_id
    @tracking_id
  end
end

tracking_id = 
shipment = Shipment.new(tracking_id)

puts shipment.tracking_label
module Trackable
  def tracking_label
    "tracking #{tracking_id}"
  end
end

class Shipment
  include Trackable

  def initialize(tracking_id)
    @tracking_id = tracking_id
  end

  def tracking_id
    @tracking_id
  end
end

tracking_id = 
shipment = Shipment.new(tracking_id)

puts shipment.tracking_label
module Trackable
  def tracking_label
    "tracking #{tracking_id}"
  end
end

class Shipment
  include Trackable

  def initialize(tracking_id)
    @tracking_id = tracking_id
  end

  def tracking_id
    @tracking_id
  end
end

tracking_id = 
shipment = Shipment.new(tracking_id)

puts shipment.tracking_label
mixin A mixin is a module included into a class so its methods act like instance methods.