Clases abiertas y monkey patching
Explore cómo Ruby permite modificar clases existentes y añadir nuevas funcionalidades
Clases abiertas y monkey patching es una lección gratuita de Ruby Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Ruby Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Ruby Academy incluye 4 lecciones en total.
Modificación de clases durante la ejecución
Clases abiertas y monkey patching
Ruby permite modificar clases existentes durante la ejecución.
Esta característica, llamada 'Clases abiertas', permite a los desarrolladores ampliar o cambiar el comportamiento dinámicamente.

¿Qué son las clases abiertas?
¿Qué son las clases abiertas?
En Ruby, puede volver a abrir y modificar clases existentes.
Esto permite añadir métodos nuevos a clases integradas o definidas por el usuario.
Adición de métodos a una clase existente
Adición de métodos a una clase existente
Solo tiene que volver a definir una clase y añadir métodos nuevos.
class String
def shout
self.upcase + '!!!'
end
end
puts 'hello'.shoutSobrescritura de métodos (monkey patching)
Sobrescritura de métodos (Monkey Patching)
Puede sobrescribir métodos existentes en las clases de Ruby.
class String
def reverse
'Reversed method overridden!'
end
end
puts 'hello'.reverseConservación del método original con super
Conservación del método original con super
Utilice super para conservar el comportamiento del método original.
class String
def reverse
super + ' (custom behavior added)'
end
end
puts 'hello'.reverseCasos de uso de las clases abiertas
Casos de uso de las clases abiertas
Las clases abiertas resultan útiles en diversas situaciones:
- Ampliar clases integradas con métodos adicionales.
- Mejorar bibliotecas de terceros.
- Mejorar la legibilidad y la mantenibilidad.
Riesgos del monkey patching
Riesgos del monkey patching
El monkey patching puede ser peligroso si no se utiliza con cuidado.
- Comportamiento inesperado al modificar clases principales.
- Posibles conflictos con bibliotecas de terceros.
- Mayor dificultad para depurar y mantener el código.
Alternativas al monkey patching
Alternativas al monkey patching
En lugar de modificar el comportamiento global, considere utilizar refinamientos.
Los refinamientos permiten modificar clases dentro de un ámbito limitado.
module StringExtensions
refine String do
def shout
upcase + '!!!'
end
end
end
using StringExtensions
puts 'hello'.shoutResumen de las clases abiertas
¡Enhorabuena!
Ha aprendido a modificar clases existentes mediante clases abiertas y monkey patching.
A continuación, explorará cómo utilizar send y eval para ejecutar métodos dinámicamente.

Preguntas frecuentes
¿La lección «Clases abiertas y monkey patching» es gratis?
Sí — el texto completo de «Clases abiertas y monkey patching» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Ruby Academy, actualiza a CoddyKit PRO. El curso de Ruby Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Clases abiertas y monkey patching»?
Explore cómo Ruby permite modificar clases existentes y añadir nuevas funcionalidades Practicas Ruby Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Ruby Academy?
No se requiere experiencia previa. Ruby Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Clases abiertas y monkey patching»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Ruby Academy?
Sí. Cada lección de Ruby Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- ¿Qué es la metaprogramación?
- Definición dinámica de métodos
- Clases abiertas y monkey patching
- Uso de send y eval