Ruby on Rails es un maravilloso marco de aplicaciones web de código abierto y completo que favorece la convención 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.
Los módulos proporcionan una estructura para recopilar clases, métodos y constantes de Ruby en una única unidad definida y con nombre por separado.
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.
Crear un módulo: escribir un módulo es similar a escribir una clase, excepto que comienza su definición con la palabra clave module en lugar de la palabra clave class.
módulo MiPrimerMódulo
def decir hola
puts “Hello”
fin
fin
Como no podemos crear una instancia del módulo, para usarlo necesitamos extenderlo e incluirlo en una clase.
incluir: mezclas en métodos de módulo especificados como métodos de instancia en la clase de destino
extender: mezcla métodos de módulo especificados como métodos de clase en la clase de destino
módulo Módulo reutilizable
def método_módulo
puts “Module Method: Hi there!”
fin
fin
clase Clase que incluye
incluir módulo reutilizable
fin
clase Clase que se extiende
extender el módulo reutilizable
fin
puts “Include”
ClassThatIncludes.new.module_method # “Module Method: Hi there!”
puts “Extend”
ClassThatExtends.module_method # “Module Method: Hi there!”
============================================================
Otro punto sobre el módulo en Ruby:
1: ) Ilustrando los conceptos básicos de la búsqueda de métodos:
módulo m
informe de definición
puts “‘report’ method in module M”
fin
fin
clase C
incluir M
fin
clase D < C
fin
obj = D.nuevo
informe.obj
Producción:
#=> ‘report’ method in module M
Workflow: Suppose I am a Ruby object, and I’ve been sent the message “report”. I have to try to find a method called report in my method
ruta de búsqueda. El informe, si existe, reside en una clase o módulo.
Soy una instancia de una clase llamada D. ¿D define un informe de método de instancia?
No.
¿D se mezcla en algún módulo?
No.
Does D’s superclass, C, define a report instance method?
No.
¿C se mezcla en algún módulo?
Si m.
¿M define un método de informe?
Sí.
Good! I’ll execute that method.
2:) Definir el mismo método más de una vez:
Si define un método dos veces dentro de la misma clase, la segunda definición tiene prioridad sobre la primera. Lo mismo ocurre con los módulos.
módulo de Intereses
def calcular_interés
puts “Placeholder! We’re in module InterestBearing.”
fin
fin
clase cuenta bancaria
incluir intereses que devengan
def calcular_interés
puts “Placeholder! We’re in class BankAccount.”
puts “And we’re overriding the calculate_interest method!”
fin
fin
cuenta = CuentaBancaria.nueva
cuenta.calcular_interés
Producción:
#=>Placeholder! We’re in class BankAccount.
#=>And we’re overriding the calculate_interest method!
3:) Mezclar en dos módulos con un método del mismo nombre definido:
módulo m
informe de definición
puts “‘report’ method in module M”
fin
fin
módulo norte
informe de definición
puts “‘report’ method in module N”
fin
fin
clase C
incluir M
incluir norte
fin
c = C.nuevo
c.informe
Producción:
#=> report’ method in module N
4:) Incluir un módulo más de una vez
clase C
incluir M
incluir norte
incluir M
fin
c = C.nuevo
c.informe
#=> report’ method in module N
Flujo de trabajo:
You might expect that when you ran the report method, you’d get M’s version, because M was the most recently included module.
But re-including a module doesn’t do anything. Because M already lies on the search path, the second include M instruction has no effect. N is still considered the most recently included module:
5:) Going up the method search path with super: Inside the body of a method definition, you can use the super keyword to jump up to the next-highest definition, in the method-lookup path, of the method you’re currently executing.
módulo m
informe de definición
puts “‘report’ method in module M”
fin
fin
clase C
incluir M
informe de definición
puts “‘report’ method in class C”
puts “About to trigger the next higher-up report method…”
súper
puts “Back from the ‘super’ call.”
fin
fin
B
C
D
c = C.nuevo
c.informe
#=> ‘report’ method in class C
About to trigger the next higher-up report method…
‘report’ method in module M Back from the ‘super’ call.
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 :