Conceptos básicos para crear y utilizar módulos Ruby

Ruby on Rails Es un magnífico marco de trabajo de código abierto para aplicaciones web «full-stack» que da prioridad a las convenciones sobre la configuración.  Con componentes reutilizables y fácilmente configurables que normalmente se utilizan para crear aplicaciones, crear aplicaciones en Rails es más rápido y sencillo, lo que se traduce en una mayor productividad y crecimiento empresarial. Está ganando terreno entre los desarrolladores, ya que es flexible, escalable y fácil para los desarrolladores web escribir y mantener aplicaciones. 

Ruby on Rails Pone énfasis en el uso de patrones y principios de ingeniería conocidos para reducir la carga de trabajo al crear aplicaciones web. Aunque existen múltiples métodos para resolver un desafío de programación, Ruby profesa confiar en patrones comúnmente utilizados que hacen que los sitios web Rails sean más fáciles de mantener y actualizar. Las bibliotecas de código abierto con bloques más pequeños de código Rails que resuelven problemas particulares se utilizan comúnmente para reducir la sobrecarga de desarrollo. Con la ayuda de dichos bloques de código, los desarrolladores pueden insertar gemas estables y bien probadas en lugar de perder tiempo escribiendo el mismo tipo de códigos. Una de las herramientas más poderosas en la caja de herramientas de un programador Ruby es el módulo. Rubí Módulos proporcionar una estructura para agrupar clases, métodos y constantes de Ruby en una única unidad, con un nombre y una definición propios.

Esto es útil para evitar conflictos con clases, métodos y constantes existentes, y también para poder agregar (mezclar) la funcionalidad de los módulos en sus clases.

Creación de un módulo en Ruby

Crear un módulo es similar a crear una clase, salvo que se utiliza la palabra clave «module» en lugar de la palabra clave «class».

módulo MyFirstModule
  def say_hello
    puts "Hola"
  end
end

Los módulos no se pueden instanciar. Para utilizar un módulo, debes incluirlo o heredarlo dentro de una clase.

Uso de «include» y «extend»

  • incluir

Incorpora los métodos del módulo como métodos de instancia de la clase.

  • ampliar

Incorpora los métodos del módulo como métodos de la clase.

Ejemplo

módulo ReusableModule
  def module_method
    puts "Método del módulo: ¡Hola!"
  end
end

clase ClassThatIncludes
  include ReusableModule
end

clase ClassThatExtends
  extend ReusableModule
end

puts "Incluir"
ClassThatIncludes.new.module_method
# => "Método del módulo: ¡Hola!"

puts "Extender"
ClassThatExtends.module_method
# => "Método del módulo: ¡Hola!"

Otros conceptos importantes sobre los módulos en Ruby

1. Conceptos básicos sobre la búsqueda de métodos:

módulo M
  def report
    puts "'report', método del módulo M"
  end
end

clase C
  include M
end

clase D < C
end
obj = D.new obj.report

Producción:

'Método 'report» del módulo M

Cómo funciona la búsqueda de métodos

Cuando un objeto de Ruby recibe un mensaje (una llamada a un método), busca el método en este orden:

  1. La clase «objetos» (D)
  2. Módulos incluidos en la asignatura (D)
  3. La superclase (C)
  4. Módulos incluidos en la superclase (M)
  5. Continuar subiendo por la cadena de sucesión

En este caso:

  • D no define el informe
  • En C no se define «report»
  • C incluye el módulo M
  • M define el informe, por lo que Ruby lo ejecuta

2. Definir el mismo método más de una vez

Si un método se define varias veces, prevalece la última definición. Esto se aplica tanto a las clases como a los módulos.

módulo InterestBearing
  def calcular_intereses
    puts "¡Marca de posición! Estamos en el módulo InterestBearing."
  end
end

clase BankAccount
  include InterestBearing

  def calcular_intereses
    puts "¡Marca de posición! Estamos en la clase BankAccount."
    puts "¡Y estamos sobrescribiendo el método calculate_interest!"
  end
end

cuenta = BankAccount.new
cuenta.calculate_interest

Producción:

¡Marca de posición! Estamos en la clase «BankAccount».
¡Y estamos sobrescribiendo el método `calculate_interest`!

El método de clase anula el método del módulo.

3. Incorporación de varios módulos de Ruby con el mismo nombre de método

módulo M
  def report
    puts "Método 'report' en el módulo M"
  end
end

módulo N
  def report
    puts "Método 'report' en el módulo N"
  end
end

class C
  include M
  include N
end

c = C.new
c.report

Producción:

'Método 'report» del módulo N

El último módulo incluido tiene prioridad porque aparece en primer lugar en la ruta de búsqueda de métodos.

4. Cómo incluir un módulo de Ruby más de una vez

clase C
  include M
  include N
  include M
fin

c = C.new
c.report

Producción:

'Método 'report» del módulo N

Explicación

Volver a incluir un módulo no tiene ningún efecto si este ya se encuentra en la ruta de búsqueda. Ruby no lo vuelve a colocar al principio. El módulo nuevo (N) incluido más recientemente sigue teniendo prioridad.

5. Uso de «super» con los módulos de Ruby

La palabra clave «super» te permite llamar al método siguiente en la cadena de búsqueda de métodos.

módulo M
  def report
    puts "Método 'report' en el módulo M"
  end
end

clase C
  include M

  def report
    puts "Método 'report' en la clase C"
    puts "A punto de activar el método "report" de nivel superior...'
    super
    puts 'De vuelta de la llamada a "super'."
  end
end

c = C.new
c.report

Producción:

'Método 'report' de la clase C
A punto de activar el método 'report' del nivel superior...
Método 'report» del módulo M
De vuelta tras la llamada a «super».

¿Qué pasa aquí?

  • Ruby ejecuta primero «report» en la clase C
  • «super» invoca el siguiente método de informe de la cadena de búsqueda (del módulo M)
  • A continuación, el control vuelve al método de clase

RielesCarma ha estado trabajando en RoR desde su etapa inicial y con una sólida fuerza laboral capacitada en RoR, ha crecido hasta convertirse en un nombre altamente confiable en consultoría, arquitectura, construcción, administración y extensión de Ruby on Rails para empresas de todo el mundo. 

Leer más : 

Póngase en contacto con nosotros.

Suscríbete para recibir las últimas actualizaciones

Artículos Relacionados

Acerca del autor de la publicación

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


es_ESSpanish