Я пытаюсь найти способ, которым я могу переопределить метод, сделать что-нибудь, а затем вернуться, не оставляя никаких артефактов.
I реализовали это с помощью мокко, но, очевидно, это не будет работать в производственном приложении. Обратите внимание, что новый метод имеет параметры, а старый - нет.
Пример следующего содержания
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