Ruby on Rails

Metaprogramación en Ruby

define_method, method_missing, class_eval, instance_eval, hooks, DSLs

20 preguntas de entrevista·
Senior
1

¿Qué es la metaprogramación en Ruby?

Respuesta

La metaprogramación es la capacidad de un programa para escribir o modificar código en tiempo de ejecución. En Ruby, esto permite definir métodos, clases y módulos de forma dinámica, haciendo el código más flexible y conciso. Esta técnica se usa ampliamente en frameworks como Rails para crear DSLs elegantes y reducir la duplicación de código.

2

¿Cuál es el propósito del método define_method en Ruby?

Respuesta

define_method permite crear métodos dinámicamente en tiempo de ejecución. Recibe un nombre de método (símbolo o cadena) y un bloque que define el cuerpo del método. A diferencia de def, define_method captura las variables locales del scope envolvente mediante una closure, lo que resulta útil para generar métodos con comportamientos parametrizados.

3

¿Cuándo invoca Ruby al método method_missing?

Respuesta

method_missing se llama automáticamente cuando un objeto recibe una llamada a un método que no existe en su cadena de herencia. Recibe el nombre del método invocado y sus argumentos, lo que permite manejar dinámicamente esas llamadas. Es la base de muchos patrones de metaprogramación, como los ghost methods utilizados en ActiveRecord.

4

¿Cuál es la principal diferencia entre class_eval e instance_eval?

5

¿Qué hook se llama cuando un module se incluye en una clase?

+17 preguntas de entrevista

Domina Ruby on Rails para tu próxima entrevista

Accede a todas las preguntas, flashcards, tests técnicos, ejercicios de code review y simuladores de entrevista.

Empieza gratis