Um módulo é um conjunto de métodos e constantes. Os métodos em um módulo podem ser métodos de instância ou métodos do próprio módulo. Módulos também proporcionam um espaço de nomes (namespace) onde pode-se organizar o código e evitar possíveis colisões de nomenclaturas. Os métodos de instância se comportam como métodos em uma classe quando o módulo está incluído na classe, os métodos do módulo não se comportam da mesma forma. Por outro lado, os métodos de módulos podem ser chamados sem criar um objeto de encapsulamento, enquanto os métodos de instância não podem.
Module: http://www.ruby-doc.org/core-2.2.0/Module.html
Linguagens como C++ permitem que uma classe possa herdar mais de uma classe, Ruby não, entretanto existe o conceito chamado Mixing que nos permite utilizar está mesma funcionalidade através dos módulos.
Exemplo:
Neste exemplo criamos um modulo chamado Portas e um modulo chamado Janelas. A especificação de objetos Ruby não permite múltiplas heranças ou seja, não permite que minha classe chamada Casa possa herdar as classes Portas e Janelas ao mesmo tempo, no entanto existe um modo de criar esta mesma funcionalidade incluindo os módulos em minha classe.
Ruby
#!/usr/bin/env ruby # Desenvolvimento Aberto # Mixing.rb # Define modulo module Portas def porta(tipo) puts "Portas: " + tipo end end # Define modulo module Janelas def janela(tipo) puts "Janelas: " + tipo end end # Define classe class Casa # Inclui modulos include Portas include Janelas def modelo(tipo, cor) puts "Casa ----------------->>>> 1\n\n" puts "Modelo:" + tipo puts "Cor: " + cor end end # Cria instancia do objeto minhaCasa = Casa.new # utiliza objeto minhaCasa.modelo("Sobrado", "Branco") minhaCasa.porta("Azul") minhaCasa.janela("Amarelas")