Un-monkey patching a class/method in Ruby

Я пытаюсь провести модульное тестирование части кода, написанного на Ruby, которая вызывает File.open. Чтобы высмеять его, я обезьянничал File.open следующим образом:

class File
  def self.open(name, &block)
    if name.include?("retval")
      return "0\n"
    else
      return "1\n"
    end
  end
end

Проблема в том, что я использую rcov для запуска всего этого, поскольку он использует File.open для записи информации о покрытии кода, он получает обезьянничающую версию вместо настоящей. Как я могу отменить monkeypatch этого метода, чтобы вернуть его к исходному методу? Я пробовал возиться с alias, но пока безрезультатно.

8
задан Chris Bunch 25 October 2011 в 16:27
поделиться