Estoy tratando de encontrar una forma de que pueda anular un método, hacer algo y luego revertir sin dejar ningún artefacto.ruby - anula el método y luego invierte
Lo he implementado usando mocha, pero obviamente esto no va a volar en una aplicación de producción. Tenga en cuenta que el nuevo método tiene parámetros y el anterior no.
Ejemplo de la siguiente manera
require 'rubygems'
require 'mocha'
class Example
def to_something
self.stubs(:attribs => other(1))
r = attribs_caller
self.unstub(:attribs)
r
end
def other(int)
{"other" => int }
end
def attribs_caller
attribs
end
def attribs
{"this" => 1 }
end
end
a1 = Example.new
puts a1.attribs_caller #=> this1
puts a1.to_something #=> other1
puts a1.attribs_caller #=> this1
bueno, un problema con esto es el hecho de que el nuevo método es dinámico y requiere algunos parámetros. Sin embargo, podría definir este método dinámicamente. Actualicé el ejemplo para reflejar esto. – stellard
Parece que el orden correcto de los parámetros es 'alias alias_nombre original_nombre', no al revés ... – vemv