module FakeFS::Kernel

Kernel Module

Attributes

captives[RW]

Public Class Methods

hijack(name, &block) click to toggle source

NOTE: maybe private

# File lib/fakefs/kernel.rb, line 29
def self.hijack(name, &block)
  captives[:original][name] = ::Kernel.method(name.to_sym)
  captives[:hijacked][name] = block || proc { |_args| }
end
hijack!() click to toggle source
# File lib/fakefs/kernel.rb, line 10
def self.hijack!
  captives[:hijacked].each do |name, prc|
    ::Kernel.send(:remove_method, name.to_sym)
    ::Kernel.send(:define_method, name.to_sym, &prc)
    ::Kernel.send(:private, name.to_sym)
  end
end
unhijack!() click to toggle source
# File lib/fakefs/kernel.rb, line 18
def self.unhijack!
  captives[:original].each do |name, _prc|
    ::Kernel.send(:remove_method, name.to_sym)
    ::Kernel.send(:define_method, name.to_sym, proc do |*args, &block|
      ::FakeFS::Kernel.captives[:original][name].call(*args, &block)
    end)
    ::Kernel.send(:private, name.to_sym)
  end
end