subcontractor 0.3.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/examples/Procfile +1 -0
- data/examples/slanger/.rvmrc +1 -0
- data/examples/slanger/Gemfile +3 -0
- data/lib/subcontractor/cli.rb +13 -5
- data/lib/subcontractor/version.rb +1 -1
- metadata +6 -4
data/examples/Procfile
CHANGED
@@ -1,3 +1,4 @@
|
|
1
1
|
thin: ruby -I ../lib ../bin/subcontract --rvm ruby-1.8.7-p249@subcontractor-webapp --chdir webapp --signal INT -- bundle exec rackup config.ru -p 3001
|
2
2
|
webrick: ruby -I ../lib ../bin/subcontract --rvm ruby-1.8.7-p249@subcontractor-webapp --chdir webapp --signal INT -- bundle exec thin --rackup config.ru -p 3002 start
|
3
3
|
sleepy: ruby -I ../lib ../bin/subcontract --chdir script -- ruby sleepy.rb
|
4
|
+
slanger: ruby -I ../lib ../bin/subcontract --chdir slanger --rvm ruby-1.9.2@slanger -- bundle exec slanger --app_key xxx --secret xxx -w 0.0.0.0:8081
|
@@ -0,0 +1 @@
|
|
1
|
+
rvm use ruby-1.9.2@slanger --create
|
data/lib/subcontractor/cli.rb
CHANGED
@@ -11,7 +11,7 @@ module Subcontractor
|
|
11
11
|
signal = options[:signal] || "TERM"
|
12
12
|
PTY.spawn(command) do |stdin, stdout, pid|
|
13
13
|
trap("TERM") do
|
14
|
-
|
14
|
+
send_kill(signal, find_pids_to_kill(pid))
|
15
15
|
end
|
16
16
|
until stdin.eof?
|
17
17
|
puts stdin.gets
|
@@ -19,16 +19,24 @@ module Subcontractor
|
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
|
-
def send_kill(signal,
|
22
|
+
def send_kill(signal, pids)
|
23
23
|
pids.each { |pid| Process.kill(signal, pid) }
|
24
24
|
end
|
25
25
|
|
26
|
-
def
|
26
|
+
def find_pids_to_kill(*pids_to_investigate)
|
27
|
+
pids_to_kill = pids_to_investigate
|
28
|
+
begin
|
29
|
+
pids_to_investigate = find_child_pids(pids_to_investigate)
|
30
|
+
pids_to_kill = pids_to_investigate + pids_to_kill
|
31
|
+
end until pids_to_investigate.empty?
|
32
|
+
pids_to_kill
|
33
|
+
end
|
34
|
+
|
35
|
+
def find_child_pids(pids)
|
27
36
|
lines = `ps axo pid,ppid`
|
28
37
|
child_pids = lines.map(&:split).select do |(child_pid, parent_pid)|
|
29
|
-
parent_pid
|
38
|
+
pids.include?(parent_pid.to_i)
|
30
39
|
end.map(&:first).map(&:to_i)
|
31
|
-
child_pids + [pid]
|
32
40
|
end
|
33
41
|
|
34
42
|
def build_command(parts, options)
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: subcontractor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 17
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 3
|
9
|
-
-
|
10
|
-
version: 0.3.
|
9
|
+
- 1
|
10
|
+
version: 0.3.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Tony Pitluga
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-12-
|
18
|
+
date: 2011-12-30 00:00:00 Z
|
19
19
|
dependencies: []
|
20
20
|
|
21
21
|
description: rvm aware process launcher for foreman
|
@@ -36,6 +36,8 @@ files:
|
|
36
36
|
- bin/subcontract
|
37
37
|
- examples/Procfile
|
38
38
|
- examples/script/sleepy.rb
|
39
|
+
- examples/slanger/.rvmrc
|
40
|
+
- examples/slanger/Gemfile
|
39
41
|
- examples/webapp/.rvmrc
|
40
42
|
- examples/webapp/Gemfile
|
41
43
|
- examples/webapp/app.rb
|