diff --git a/Gemfile b/Gemfile index 73adc42..7be0323 100644 --- a/Gemfile +++ b/Gemfile @@ -2,6 +2,10 @@ source "http://rubygems.org" gemspec +platform :jruby do + gem "posix-spawn", "~> 0.3.6" +end + group :development do gem 'parka' gem 'rake' diff --git a/Gemfile.lock b/Gemfile.lock index 0f32af7..35304b9 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -24,6 +24,7 @@ GEM crack rest-client thor + posix-spawn (0.3.6) rake (0.9.2.2) rcov (0.9.8) rcov (0.9.8-java) @@ -57,6 +58,7 @@ DEPENDENCIES fakefs (~> 0.3.2) foreman! parka + posix-spawn (~> 0.3.6) rake rcov (~> 0.9.8) ronn diff --git a/foreman.gemspec b/foreman.gemspec index d686867..db6f295 100644 --- a/foreman.gemspec +++ b/foreman.gemspec @@ -19,8 +19,8 @@ Gem::Specification.new do |gem| gem.add_dependency 'term-ansicolor', '~> 1.0.7' gem.add_dependency 'thor', '>= 0.13.6' - if RUBY_PLATFORM == "java" || ENV["JRUBY"] - gem.add_dependency "spoon", "~> 0.0.1" + if ENV["JRUBY"] + gem.add_dependency "posix-spawn", "~> 0.3.6" gem.platform = Gem::Platform.new("java") end end diff --git a/lib/foreman/process.rb b/lib/foreman/process.rb index f63aed9..1802dcc 100644 --- a/lib/foreman/process.rb +++ b/lib/foreman/process.rb @@ -34,8 +34,10 @@ private reader, writer = IO.pipe command = replace_command_env(command) pid = if jruby? - require "spoon" - Spoon.spawnp Foreman.runner, "-d", basedir, command + require "posix/spawn" + POSIX::Spawn.spawn(Foreman.runner, "-d", basedir, command, { + :out => writer, :err => writer + }) else fork do trap("INT", "IGNORE")