Definición dinámica de métodos
Aprenda a definir y llamar métodos dinámicamente mediante define_method y method_missing
Definición dinámica de métodos es una lección gratuita de Ruby Academy en CoddyKit. Esta es la lección 2 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.
Creación dinámica de métodos
Definición dinámica de métodos
En Ruby, los métodos se pueden crear dinámicamente durante la ejecución.
Esto permite escribir código más flexible y reutilizable.

Uso de define_method
Uso de define_method
El método define_method permite definir métodos dinámicamente.
class Person
define_method(:greet) { puts 'Hello!' }
end
p = Person.new
p.greetUso de define_method con parámetros
Uso de define_method con parámetros
Puede pasar argumentos a los métodos creados dinámicamente.
class Person
define_method(:greet) { |name| puts "Hello, #{name}!" }
end
p = Person.new
p.greet('Alice')Uso de method_missing
Uso de method_missing
El método method_missing intercepta las llamadas a métodos no definidos.
class Person
def method_missing(name, *args)
puts "Method '#{name}' is missing!"
end
end
p = Person.new
p.unknown_methodGestión dinámica de method_missing
Gestión dinámica de method_missing
Puede utilizar method_missing para gestionar métodos de forma flexible.
class DynamicPerson
def method_missing(name, *args)
if name.to_s.start_with?('say_')
puts "You asked me to say: #{name.to_s.split('_')[1..-1].join(' ')}"
else
super
end
end
end
p = DynamicPerson.new
p.say_hello_worldSobrescritura de respond_to_missing?
Sobrescritura de respond_to_missing?
Para gestionar correctamente las comprobaciones de métodos, sobrescriba respond_to_missing?.
class DynamicPerson
def method_missing(name, *args)
if name.to_s.start_with?('say_')
puts "Saying: #{name.to_s.split('_')[1..-1].join(' ')}"
else
super
end
end
def respond_to_missing?(name, include_private = false)
name.to_s.start_with?('say_') || super
end
end
p = DynamicPerson.new
puts p.respond_to?(:say_hello)Uso de method_missing para getters y setters dinámicos
Uso de method_missing para getters y setters dinámicos
Puede crear atributos dinámicos mediante method_missing.
class DynamicPerson
def initialize
@data = {}
end
def method_missing(name, *args)
attribute = name.to_s.sub(/=$/, '')
if name.to_s.end_with?('=')
@data[attribute] = args.first
else
@data[attribute]
end
end
end
p = DynamicPerson.new
p.name = 'Alice'
puts p.nameRiesgos de seguridad de method_missing
Riesgos de seguridad de method_missing
El uso incorrecto de method_missing puede introducir riesgos:
- Comportamiento inesperado al gestionar métodos desconocidos.
- Posibles problemas de rendimiento debido a búsquedas excesivas de métodos.
- Vulnerabilidades de seguridad si se combina con entradas del usuario.
Repaso de los métodos dinámicos
¡Felicidades!
Ha aprendido a definir y llamar a métodos dinámicamente en Ruby.
A continuación, explorará las clases abiertas y el monkey patching.

Preguntas frecuentes
¿La lección «Definición dinámica de métodos» es gratis?
Sí — el texto completo de «Definición dinámica de métodos» 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 «Definición dinámica de métodos»?
Aprenda a definir y llamar métodos dinámicamente mediante define_method y method_missing 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 2 de 4.
¿Cuánto tiempo toma la lección «Definición dinámica de métodos»?
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