Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7bb1e58879 | ||
|
|
62b6cac741 | ||
|
|
2a7dadc2b2 | ||
|
|
9cd772ac0f | ||
|
|
2b27d0a51a | ||
|
|
99204d7c1d | ||
|
|
e9b5ed81b8 |
@@ -3,4 +3,4 @@ stop on stopping <%= app %>-<%= process.name %>
|
||||
respawn
|
||||
|
||||
chdir <%= engine.directory %>
|
||||
exec su <%= user %> -c "PORT=<%= port %> <%= process.command %> >> <%= log_root %>/<%=process.name%>-<%=num%>.log 2>&1"
|
||||
exec su - <%= user %> -c 'export PORT=<%= port %>; <%= process.command %> >> <%= log_root %>/<%=process.name%>-<%=num%>.log 2>&1'
|
||||
|
||||
@@ -9,4 +9,5 @@ Parka::Specification.new do |gem|
|
||||
|
||||
gem.executables = "foreman"
|
||||
gem.files << "man/foreman.1"
|
||||
gem.files << Dir["export/**/*"]
|
||||
end
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
module Foreman
|
||||
|
||||
VERSION = "0.7.3"
|
||||
VERSION = "0.8.0"
|
||||
|
||||
class AppDoesNotExist < Exception; end
|
||||
|
||||
|
||||
@@ -39,8 +39,8 @@ class Foreman::Engine
|
||||
fork process, options
|
||||
end
|
||||
|
||||
trap("TERM") { kill_and_exit("TERM") }
|
||||
trap("INT") { kill_and_exit("INT") }
|
||||
trap("TERM") { puts "SIGTERM received"; kill_all("TERM") }
|
||||
trap("INT") { puts "SIGINT received"; kill_all("INT") }
|
||||
|
||||
watch_for_termination
|
||||
end
|
||||
@@ -48,8 +48,8 @@ class Foreman::Engine
|
||||
def execute(name, options={})
|
||||
fork processes[name], options
|
||||
|
||||
trap("TERM") { kill_and_exit("TERM") }
|
||||
trap("INT") { kill_and_exit("INT") }
|
||||
trap("TERM") { puts "SIGTERM received"; kill_all("TERM") }
|
||||
trap("INT") { puts "SIGINT received"; kill_all("INT") }
|
||||
|
||||
watch_for_termination
|
||||
end
|
||||
@@ -100,13 +100,12 @@ private ######################################################################
|
||||
end
|
||||
end
|
||||
|
||||
def kill_and_exit(signal="TERM")
|
||||
def kill_all(signal="TERM")
|
||||
info "terminating"
|
||||
running_processes.each do |pid, process|
|
||||
info "killing #{process.name} in pid #{pid}"
|
||||
Process.kill(signal, pid)
|
||||
end
|
||||
exit 0
|
||||
end
|
||||
|
||||
def info(message, process=nil)
|
||||
@@ -149,7 +148,8 @@ private ######################################################################
|
||||
pid, status = Process.wait2
|
||||
process = running_processes.delete(pid)
|
||||
info "process terminated", process
|
||||
kill_and_exit
|
||||
kill_all
|
||||
Process.waitall
|
||||
end
|
||||
|
||||
def running_processes
|
||||
|
||||
Reference in New Issue
Block a user