Módulos

Los módulos en Ruby cumplen una doble función: evitan colisiones de nombres y nos ayudan a reutilizar código.

Un módulo es un contenedor de clases, métodos y constantes. Los módulos se definen utilizando la palabra clave module.

Creemos un módulo MyModule:

module MyModule
end

Dentro del módulo podemos definir clases, métodos y constantes. Por ejemplo:

module MyModule
  MAX_CONNECTIONS = 5

  def method_one
  end

  def method_two
  end

  class ThingOne
  end

  class ThingTwo
  end
end

Para acceder a las clases y constantes escribes el nombre del módulo, seguido de :: (doble dos puntos), seguido del nombre de la clase o la constante. Por ejemplo:

A los métodos que están definidos en un módulo no los podemos acceder directamente, tenemos que mezclar el módulo dentro de una clase.

Mezclando el módulo

Los módulos se pueden incluir dentro de una clase utilizando la palabra clave include:

Esto va a incluir todos los métodos de MyModule dentro de Person, así que podemos llamar los métodos method_one y method_two (que definimos dentro del módulo MyModule en la sección anterior) sobre instancias de Person.

Otra ventaja de incluir (o mezclar) un módulo dentro de una clase es que podemos acceder a las clases y las constantes que están definidas dentro del módulo directamente:

Es posible mezclar más de un módulo en una clase. Por ejemplo, suponiendo que existen los módulos Module1 y Module2, podemos hacer lo siguiente:

Anidando módulos

Es posible anidar módulos dentro de módulos. Por ejemplo:

¿Cómo accedemos a la clase Dollar? De la siguiente forma:

Last updated