In MRI Ruby I can do this:
def transfer
internal_server = self.init_server
pid = fork do
internal_server.run
end
# Make the server process run independently.
Process.detach(pid)
internal_client = self.init_client
# Do other stuff with connecting to internal_server...
internal_client.post('some data')
ensure
# Kill server
Process.kill('KILL', pid) if pid
end
However the above code will not run in jRuby, because it does not support ‘fork’ method:
NotImplementedError: fork is not available on this platform
Is there any alternative solution for this in jRuby?
Thanks.
I found out the solution for this. We can use the built-in library FFI in JRuby to ‘simulate’ the Process.fork in MRI.
More details:
https://github.com/ffi/ffi
http://blog.headius.com/2008/10/ffi-for-ruby-now-available.html