Compare commits

...
8 Commits
Author SHA1 Message Date
David Dollar 342d30bbb8 0.31.0 2012-01-04 12:16:51 -05:00
David Dollar 268dd6240e make fork more robust 2012-01-04 12:15:55 -05:00
David Dollar 9e60b3e1a4 remove unnecessary debug 2012-01-04 12:15:38 -05:00
David Dollar 1c6285f8af add more information when shutting down 2012-01-04 12:15:17 -05:00
David Dollar fff15bc627 Merge pull request #110 from lstoll/master
Different port range for each process type on 'foreman start'
2011-12-24 22:47:36 -08:00
Lincoln Stoll a66157d611 Use different port ranges for each process type 2011-12-25 15:46:21 +11:00
David Dollar fcfa913fb0 0.30.1 2011-12-23 08:48:34 -05:00
David Dollar fc438472f9 require thread for mutex 2011-12-23 08:48:17 -05:00
4 changed files with 12 additions and 13 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
PATH PATH
remote: . remote: .
specs: specs:
foreman (0.30.0) foreman (0.31.0)
term-ansicolor (~> 1.0.5) term-ansicolor (~> 1.0.5)
thor (>= 0.13.6) thor (>= 0.13.6)
+3 -1
View File
@@ -7,6 +7,7 @@ require "tempfile"
require "timeout" require "timeout"
require "term/ansicolor" require "term/ansicolor"
require "fileutils" require "fileutils"
require "thread"
class Foreman::Engine class Foreman::Engine
@@ -57,7 +58,7 @@ private ######################################################################
procfile.entries.each do |entry| procfile.entries.each do |entry|
reader, writer = IO.pipe reader, writer = IO.pipe
entry.spawn(concurrency[entry.name], writer, @directory, @environment, base_port).each do |process| entry.spawn(concurrency[entry.name], writer, @directory, @environment, port_for(entry, 1, base_port)).each do |process|
running_processes[process.pid] = process running_processes[process.pid] = process
readers[process] = reader readers[process] = reader
end end
@@ -70,6 +71,7 @@ private ######################################################################
def kill_all(signal="SIGTERM") def kill_all(signal="SIGTERM")
running_processes.each do |pid, process| running_processes.each do |pid, process|
info "sending #{signal} to pid #{pid}"
Process.kill(signal, pid) rescue Errno::ESRCH Process.kill(signal, pid) rescue Errno::ESRCH
end end
end end
+7 -10
View File
@@ -28,21 +28,18 @@ class Foreman::Process
private private
def fork_with_io(command) def fork_with_io(command)
io = case RUBY_VERSION reader, writer = IO.pipe
when /^1\.9\./ pid = fork do
IO.popen([Foreman.runner, replace_command_env(command)], "w+") trap("INT", "IGNORE")
when /^1\.8\./ $stdout.reopen writer
full_command = replace_command_env(command).gsub("'", "\\'") reader.close
IO.popen("#{Foreman.runner} '#{full_command}'", "w+") exec Foreman.runner, replace_command_env(command)
else
raise "Unknown Ruby version: #{RUBY_VERSION}"
end end
[ io, io.pid ] [ reader, pid ]
end end
def run_process(command, pipe) def run_process(command, pipe)
io, @pid = fork_with_io(command) io, @pid = fork_with_io(command)
trap("SIGTERM") { "got sigterm for %d" % @pid }
output pipe, "started with pid %d" % @pid output pipe, "started with pid %d" % @pid
Thread.new do Thread.new do
until io.eof? until io.eof?
+1 -1
View File
@@ -1,5 +1,5 @@
module Foreman module Foreman
VERSION = "0.30.0" VERSION = "0.31.0"
end end