domingo, 2 de noviembre de 2008

Generacion dinámica de métodos en ruby

Una característica que puede añadir mucha potencia a los módulos que creamos en ruby es la generación automática de métodos.

Se usa intensivamente en rails, tanto en la implementación de ActiveRecord como de la mayoría de plugins.

Para definir métodos de forma dinámica tan solo hay que redefinir method_missing, este método se llama cada vez que se llama a una función no definida, recibe como primer parámetro el nombre del método y como segundo parámetro la lista de argumentos.

Dejo un ejemplo.

#!/usr/bin/ruby

def method_missing(method, *args)
if method.to_s =~ /saludo_(\w+)/
generar_saludo($1)
else
super(method, *args)
end
end

def generar_saludo(msg)
puts "hola #{msg}"
end


saludo_mundo

0 comentarios: