module ActiveSupport::Testing::Isolation::Forking
Public Instance Methods
run_in_isolation() { || ... }
click to toggle source
# File lib/active_support/testing/isolation.rb, line 36 def run_in_isolation(&blk) read, write = IO.pipe read.binmode write.binmode pid = fork do read.close yield begin if error? failures.map! { |e| begin Marshal.dump e e rescue TypeError ex = Exception.new e.message ex.set_backtrace e.backtrace Minitest::UnexpectedError.new ex end } end result = Marshal.dump(self.dup) end write.puts [result].pack("m") exit! end write.close result = read.read Process.wait2(pid) return result.unpack("m")[0] end