Inspeccionar objetos en tiempo de ejecución con methods, instance_variables y ObjectSpace
Definir métodos dinámicamente con define_method y attr_accessor generados a medida
Interceptar llamadas inexistentes combinando method_missing y respond_to_missing? sin romper la introspección
Abrir clases y módulos con refinements para evitar el parcheo global de monkey patching
Construir una DSL interna con instance_eval, bloques y receptores implícitos
Enganchar el ciclo de vida de las clases mediante included, inherited y method_added
Medir el coste de la metaprogramación y decidir cuándo no usarla
Contenido del curso
7 módulos · 34 clases en vídeo · práctica guiada en cada módulo
Módulo 1 · El modelo de objetos de Ruby5 clases
Presentación del curso y entorno con Ruby 3 y Bundler
Todo es un objeto: clases, instancias y self
La cadena de búsqueda de métodos paso a paso
Singleton classes y métodos de clase
Ancestors, prepend e include vistos en la consola
Módulo 2 · Introspección y reflexión5 clases
Preguntar a un objeto con methods, instance_variables y send
Consultar la jerarquía con ancestors y instance_method
Recorrer el proceso con ObjectSpace
Acceso a lo privado: cuándo send es legítimo
Ejercicio: un inspector de objetos por consola
Módulo 3 · Definición dinámica de métodos5 clases
define_method y clausuras que capturan estado
Generar accesores a medida para un mapeo de datos
method_missing y su pareja respond_to_missing?
Delegación con Forwardable y con proxies propios
Ejercicio: un envoltorio dinámico de API REST
Módulo 4 · Ganchos del ciclo de vida5 clases
included, extended y prepended en módulos
inherited para registrar subclases automáticamente
method_added y auditoría de definiciones
Un sistema de plugins con registro automático
Errores típicos al usar hooks y cómo depurarlos
Módulo 5 · Ámbitos de evaluación5 clases
instance_eval frente a class_eval
Bloques, binding y el objeto receptor
Refinements como alternativa al monkey patching
eval con cadenas: riesgos y casos justificados
Comparativa de rendimiento entre enfoques
Módulo 6 · Diseño de DSL internas4 clases
Anatomía de una DSL: verbos, contexto y estado
Construir el receptor implícito de una DSL de configuración
Mensajes de error legibles cuando la DSL se usa mal
Documentar una DSL para quien no la escribió
Módulo 7 · Proyecto de cierre5 clases
Especificación de una gema de validaciones declarativas
Implementar el DSL de reglas con define_method
Pruebas con RSpec y casos límite
Empaquetar la gema y publicar la documentación
Revisión final: cuándo habría bastado con código normal
Requisitos
Ruby a nivel sólido: clases, módulos, bloques, procs y lambdas
Haber escrito alguna gema o aplicación Ruby de cierto tamaño
Entorno local con Ruby 3.x y Bundler instalados
Descripción
En un proyecto Ruby maduro llega el momento en que el código repite estructuras casi idénticas: validaciones, mapeos de campos, envoltorios de API. Copiar y pegar se vuelve insostenible, y la respuesta que da el propio lenguaje es la metaprogramación. El problema es que se usa a ciegas, copiando trucos vistos en Rails sin entender el modelo de objetos que hay debajo.
El curso reconstruye ese modelo desde la cadena de búsqueda de métodos y las singleton classes, y a partir de ahí introduce cada técnica resolviendo un caso concreto. Se programa un mapeador de atributos generado en tiempo de ejecución, un registro de plugins basado en hooks de herencia y una DSL de configuración con bloques. Cada pieza se acompaña de sus pruebas y de la discusión sobre legibilidad.
Al terminar se puede leer el código de gemas como ActiveRecord o RSpec sin que parezca magia, y decidir con criterio dónde una DSL interna simplifica de verdad la vida del equipo. Es la base natural para especializarse en desarrollo de gemas, en extensiones de Rails o en herramientas internas de automatización.
¿Para quién es este curso?
Desarrolladores Ruby con años de Rails que quieren entender qué ocurre bajo los helpers del marco
Autores de gemas internas que necesitan ofrecer una API declarativa a otros equipos
Personas que mantienen código heredado lleno de metaprogramación y deben depurarlo con seguridad
Próximamente
Curso en hoja de ruta. Se prioriza según la demanda recogida y los proyectos en cartera.
Este sitio web utiliza cookies propias y de terceros para recopilar información con finalidad técnica. No se recaban ni ceden datos de carácter personal sin tu consentimiento. Más información en la política de cookies.