Module: ActiveSupport::Testing::Isolation::Forking

Defined in:
activesupport/lib/active_support/testing/isolation.rb

Instance Method Summary (collapse)

Instance Method Details

- (Object) run_in_isolation(&blk)



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'activesupport/lib/active_support/testing/isolation.rb', line 38

def run_in_isolation(&blk)
  read, write = IO.pipe
  read.binmode
  write.binmode

  pid = fork do
    read.close
    yield
    write.puts [Marshal.dump(self.dup)].pack("m")
    exit!
  end

  write.close
  result = read.read
  Process.wait2(pid)
  return result.unpack("m")[0]
end