Marshalを使ってシリアライズしてパイプを使って渡す。
forkじゃなくて普通にプロセス間でやるときはunix domain socketなりnamed pipeなり使えば良いのかな…。試してないけど。
class Test
attr_accessor :val
end
dump_obj = Test.new
dump_obj.val = 'test val'
read, write = IO.pipe
Marshal.dump(dump_obj, write)
write.close
pid = fork do
load_obj = Marshal.load(read)
p load_obj.val
read.close
end
read.close
Process.waitpid(pid)
puts 'exit'