Skip to content

Commit

Permalink
Merge pull request #140 from jc00ke/foreman
Browse files Browse the repository at this point in the history
---

Fixes #2

This is my first patch for JRuby, so any feedback would be appreciated. The specs do not run (Ill file a separate issue) but I am able to successfully start up & run the contents of a `Procfile`.

I based this patch on [launchys JRuby support](copiousfreetime/launchy#10) and I too confirmed these changes did not break 1.8.7, 1.9.2 or 1.9.3.
  • Loading branch information
ddollar committed Jan 22, 2012
2 parents a008886 + 853a88d commit e161ecb
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 7 deletions.
4 changes: 4 additions & 0 deletions Gemfile
Expand Up @@ -2,6 +2,10 @@ source "http://rubygems.org"

gemspec

platform :jruby do
gem 'spoon', '~> 0.0.1'
end

group :development do
gem 'parka'
gem 'rake'
Expand Down
5 changes: 5 additions & 0 deletions Gemfile.lock
Expand Up @@ -17,6 +17,7 @@ GEM
diff-lcs (1.1.3)
fakefs (0.3.2)
hpricot (0.8.2)
hpricot (0.8.2-java)
mime-types (1.16)
mustache (0.11.2)
parka (0.6.2)
Expand All @@ -25,6 +26,7 @@ GEM
thor
rake (0.9.2.2)
rcov (0.9.8)
rcov (0.9.8-java)
rdiscount (1.6.5)
rest-client (1.6.1)
mime-types (>= 1.16)
Expand All @@ -42,11 +44,13 @@ GEM
diff-lcs (~> 1.1.2)
rspec-mocks (2.8.0)
rubyzip (0.9.4)
spoon (0.0.1)
term-ansicolor (1.0.7)
thor (0.14.6)
xml-simple (1.0.15)

PLATFORMS
java
ruby

DEPENDENCIES
Expand All @@ -60,3 +64,4 @@ DEPENDENCIES
rr (~> 1.0.2)
rspec (~> 2.0)
rubyzip
spoon (~> 0.0.1)
25 changes: 18 additions & 7 deletions lib/foreman/process.rb
@@ -1,4 +1,6 @@
require "foreman"
require "rubygems"
require "spoon" if RUBY_PLATFORM == "java"

class Foreman::Process

Expand Down Expand Up @@ -27,15 +29,24 @@ def name

private

def jruby?
defined?(RUBY_PLATFORM) and RUBY_PLATFORM == "java"
end

def fork_with_io(command)
reader, writer = IO.pipe
pid = fork do
trap("INT", "IGNORE")
writer.sync = true
$stdout.reopen writer
$stderr.reopen writer
reader.close
exec Foreman.runner, replace_command_env(command)
command = replace_command_env(command)
pid = if jruby?
Spoon.spawnp Foreman.runner, command
else
fork do
trap("INT", "IGNORE")
writer.sync = true
$stdout.reopen writer
$stderr.reopen writer
reader.close
exec Foreman.runner, command
end
end
[ reader, pid ]
end
Expand Down

0 comments on commit e161ecb

Please sign in to comment.