As the previous posts of this blog, ruby 1.9's
Kernel.spawn is very useful. I ported it to ruby 1.8 partly. How about on JRuby?
Currently there are two ways of using
spawn on JRuby, but both of them have problem.
fork + exec + spawn-for-legacy library
I made a wrapper library spawn-for-legacy which provides ruby 1.9 style
If JRuby has
exec, you can use
spawn-for-legacy. Unfortunatelly when you use
fork on JRuby, you have to set a command line option to JRuby interpreter.
It also outputs an warning.
I like this philosophy. JRuby only offeres platform independent features as the default. If you want to use platform dependent features, you need to state it explicitly.
Anyway, now you can use
spawn on the platform provides
#!/jruby -J-Djruby.fork.enabled=true require 'rubygems' require 'sfl' pid = spawn 'ruby', 'a.rb', :out => '/dev/null'
spoon is a rubygems library written by Charles Nutter. This offers
spawn using ffi. This works all platforms which provide
posix_spawn. Usually the number of platforms which provide
posix_spawn is more than the number of platforms which provide
spoon is more platform independent.
#!/jruby require 'rubygems' require 'spoon' pid = spawn 'ruby', 'a.rb'
spoon doesn't seem to support all features ruby 1.9's
spawn has. For example, you cannot redirect the output.
The goal is already clear. I think someone will write a wrapper library.