invoker 1.3.1 → 1.3.2
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.
- checksums.yaml +7 -0
- data/invoker.gemspec +1 -1
- data/lib/invoker/commander.rb +1 -1
- data/lib/invoker/parsers/config.rb +17 -15
- data/lib/invoker/version.rb +1 -1
- data/spec/invoker/commander_spec.rb +32 -6
- data/spec/invoker/config_spec.rb +33 -0
- metadata +43 -75
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: ae3892c6b5eb0de5fc95cb6a52f8a0c06721bf0b
|
4
|
+
data.tar.gz: 790c4b8182ce9df8c6c314965fabd7c56fca0cea
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 04d9b3942cf2d1266b1dd59e457fda2d7bbb8ada95026995db4185d17496661e7944648db982997692cca5ba9a5bf62bac799d8d5c48e725a6f0c5c8f1235765
|
7
|
+
data.tar.gz: 1c6fc620418949a8ee22e1404838bb1a91573efc12488b46c82356889f825c613265083db6284e58d1580225fc9d926fff27a3be1673f21a02ec6fd62f178d18
|
data/invoker.gemspec
CHANGED
@@ -29,7 +29,7 @@ Gem::Specification.new do |s|
|
|
29
29
|
s.add_dependency("rainbow", "~> 2.0")
|
30
30
|
s.add_dependency("iniparse", "~> 1.1")
|
31
31
|
s.add_dependency("formatador", "~> 0.2")
|
32
|
-
s.add_dependency("eventmachine", "~> 1.0")
|
32
|
+
s.add_dependency("eventmachine", "~> 1.0.4")
|
33
33
|
s.add_dependency("em-proxy", "~> 0.1")
|
34
34
|
s.add_dependency("rubydns", "~> 0.8.5")
|
35
35
|
s.add_dependency("uuid", "~> 2.3")
|
data/lib/invoker/commander.rb
CHANGED
@@ -37,7 +37,7 @@ module Invoker
|
|
37
37
|
unix_server_thread = Thread.new { Invoker::IPC::Server.new }
|
38
38
|
@thread_group.add(unix_server_thread)
|
39
39
|
process_manager.run_power_server
|
40
|
-
Invoker.config.
|
40
|
+
Invoker.config.autorunnable_processes.each { |process_info| process_manager.start_process(process_info) }
|
41
41
|
at_exit { process_manager.kill_workers }
|
42
42
|
start_event_loop
|
43
43
|
end
|
@@ -27,6 +27,10 @@ module Invoker
|
|
27
27
|
power_config && power_config.https_port
|
28
28
|
end
|
29
29
|
|
30
|
+
def autorunnable_processes
|
31
|
+
processes.reject(&:disable_autorun)
|
32
|
+
end
|
33
|
+
|
30
34
|
def process(label)
|
31
35
|
processes.detect { |pconfig| pconfig.label == label }
|
32
36
|
end
|
@@ -64,10 +68,13 @@ module Invoker
|
|
64
68
|
def process_command_from_section(section)
|
65
69
|
if supports_subdomain?(section)
|
66
70
|
port = pick_port(section)
|
67
|
-
|
68
|
-
|
69
|
-
|
71
|
+
if port
|
72
|
+
command = replace_port_in_command(section['command'], port)
|
73
|
+
section['port'], section['command'] = port, command
|
74
|
+
end
|
70
75
|
end
|
76
|
+
|
77
|
+
make_pconfig(section)
|
71
78
|
end
|
72
79
|
|
73
80
|
def pick_port(section)
|
@@ -80,21 +87,16 @@ module Invoker
|
|
80
87
|
end
|
81
88
|
end
|
82
89
|
|
83
|
-
def
|
84
|
-
|
85
|
-
port: port,
|
86
|
-
label: section["label"] || section.key,
|
87
|
-
dir: expand_directory(section["directory"]),
|
88
|
-
cmd: replace_port_in_command(section["command"], port)
|
89
|
-
)
|
90
|
-
end
|
91
|
-
|
92
|
-
def make_option(section)
|
93
|
-
OpenStruct.new(
|
90
|
+
def make_pconfig(section)
|
91
|
+
pconfig = {
|
94
92
|
label: section["label"] || section.key,
|
95
93
|
dir: expand_directory(section["directory"]),
|
96
94
|
cmd: section["command"]
|
97
|
-
|
95
|
+
}
|
96
|
+
pconfig['port'] = section['port'] if section['port']
|
97
|
+
pconfig['disable_autorun'] = section['disable_autorun'] if section['disable_autorun']
|
98
|
+
|
99
|
+
OpenStruct.new(pconfig)
|
98
100
|
end
|
99
101
|
|
100
102
|
def supports_subdomain?(section)
|
data/lib/invoker/version.rb
CHANGED
@@ -18,9 +18,9 @@ describe "Invoker::Commander" do
|
|
18
18
|
describe "#start_process" do
|
19
19
|
describe "when not daemonized" do
|
20
20
|
before do
|
21
|
-
|
22
|
-
|
23
|
-
)
|
21
|
+
processes = [OpenStruct.new(:label => "foobar", :cmd => "foobar_command", :dir => ENV['HOME'])]
|
22
|
+
invoker_config.stubs(:processes).returns(processes)
|
23
|
+
invoker_config.stubs(:autorunnable_processes).returns(processes)
|
24
24
|
@commander = Invoker::Commander.new
|
25
25
|
Invoker.commander = @commander
|
26
26
|
end
|
@@ -51,9 +51,9 @@ describe "Invoker::Commander" do
|
|
51
51
|
|
52
52
|
describe "when daemonized" do
|
53
53
|
before do
|
54
|
-
|
55
|
-
|
56
|
-
)
|
54
|
+
processes = [OpenStruct.new(:label => "foobar", :cmd => "foobar_command", :dir => ENV['HOME'])]
|
55
|
+
invoker_config.stubs(:processes).returns(processes)
|
56
|
+
invoker_config.stubs(:autorunnable_processes).returns(processes)
|
57
57
|
@commander = Invoker::Commander.new
|
58
58
|
Invoker.commander = @commander
|
59
59
|
Invoker.daemonize = true
|
@@ -87,6 +87,32 @@ describe "Invoker::Commander" do
|
|
87
87
|
end
|
88
88
|
end
|
89
89
|
|
90
|
+
describe 'disable_autorun option' do
|
91
|
+
context 'autorun is disabled for a process' do
|
92
|
+
before do
|
93
|
+
@processes = [
|
94
|
+
OpenStruct.new(:label => "foobar", :cmd => "foobar_command", :dir => ENV['HOME']),
|
95
|
+
OpenStruct.new(:label => "panda", :cmd => "panda_command", :dir => ENV['HOME'], :disable_autorun => true)
|
96
|
+
]
|
97
|
+
invoker_config.stubs(:processes).returns(@processes)
|
98
|
+
invoker_config.stubs(:autorunnable_processes).returns([@processes.first])
|
99
|
+
|
100
|
+
@commander = Invoker::Commander.new
|
101
|
+
end
|
102
|
+
|
103
|
+
it "doesn't run process" do
|
104
|
+
@commander.expects(:install_interrupt_handler)
|
105
|
+
@commander.process_manager.expects(:run_power_server)
|
106
|
+
@commander.expects(:at_exit)
|
107
|
+
@commander.expects(:start_event_loop)
|
108
|
+
|
109
|
+
@commander.process_manager.expects(:start_process).with(@processes[0])
|
110
|
+
@commander.process_manager.expects(:start_process).with(@processes[1]).never
|
111
|
+
@commander.start_manager
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
90
116
|
describe "#runnables" do
|
91
117
|
before do
|
92
118
|
@commander = Invoker::Commander.new
|
data/spec/invoker/config_spec.rb
CHANGED
@@ -190,4 +190,37 @@ web: bundle exec rails s -p $PORT
|
|
190
190
|
end
|
191
191
|
end
|
192
192
|
|
193
|
+
describe "#autorunnable_processes" do
|
194
|
+
it "returns a list of processes that can be autorun" do
|
195
|
+
begin
|
196
|
+
file = Tempfile.new(["config", ".ini"])
|
197
|
+
config_data =<<-EOD
|
198
|
+
[postgres]
|
199
|
+
command = postgres -D /usr/local/var/postgres
|
200
|
+
|
201
|
+
[redis]
|
202
|
+
command = redis-server /usr/local/etc/redis.conf
|
203
|
+
disable_autorun = true
|
204
|
+
|
205
|
+
[memcached]
|
206
|
+
command = /usr/local/opt/memcached/bin/memcached
|
207
|
+
disable_autorun = false
|
208
|
+
|
209
|
+
[panda-api]
|
210
|
+
command = bundle exec rails s
|
211
|
+
disable_autorun = true
|
212
|
+
|
213
|
+
[panda-auth]
|
214
|
+
command = bundle exec rails s -p $PORT
|
215
|
+
EOD
|
216
|
+
file.write(config_data)
|
217
|
+
file.close
|
218
|
+
|
219
|
+
config = Invoker::Parsers::Config.new(file.path, 9000)
|
220
|
+
expect(config.autorunnable_processes.map(&:label)).to eq(['postgres', 'memcached', 'panda-auth'])
|
221
|
+
ensure
|
222
|
+
file.unlink()
|
223
|
+
end
|
224
|
+
end
|
225
|
+
end
|
193
226
|
end
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: invoker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
5
|
-
prerelease:
|
4
|
+
version: 1.3.2
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Hemant Kumar
|
@@ -10,230 +9,202 @@ authors:
|
|
10
9
|
autorequire:
|
11
10
|
bindir: bin
|
12
11
|
cert_chain: []
|
13
|
-
date: 2014-
|
12
|
+
date: 2014-12-26 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
15
|
name: thor
|
17
16
|
requirement: !ruby/object:Gem::Requirement
|
18
|
-
none: false
|
19
17
|
requirements:
|
20
|
-
- - ~>
|
18
|
+
- - "~>"
|
21
19
|
- !ruby/object:Gem::Version
|
22
20
|
version: '0.19'
|
23
21
|
type: :runtime
|
24
22
|
prerelease: false
|
25
23
|
version_requirements: !ruby/object:Gem::Requirement
|
26
|
-
none: false
|
27
24
|
requirements:
|
28
|
-
- - ~>
|
25
|
+
- - "~>"
|
29
26
|
- !ruby/object:Gem::Version
|
30
27
|
version: '0.19'
|
31
28
|
- !ruby/object:Gem::Dependency
|
32
29
|
name: rainbow
|
33
30
|
requirement: !ruby/object:Gem::Requirement
|
34
|
-
none: false
|
35
31
|
requirements:
|
36
|
-
- - ~>
|
32
|
+
- - "~>"
|
37
33
|
- !ruby/object:Gem::Version
|
38
34
|
version: '2.0'
|
39
35
|
type: :runtime
|
40
36
|
prerelease: false
|
41
37
|
version_requirements: !ruby/object:Gem::Requirement
|
42
|
-
none: false
|
43
38
|
requirements:
|
44
|
-
- - ~>
|
39
|
+
- - "~>"
|
45
40
|
- !ruby/object:Gem::Version
|
46
41
|
version: '2.0'
|
47
42
|
- !ruby/object:Gem::Dependency
|
48
43
|
name: iniparse
|
49
44
|
requirement: !ruby/object:Gem::Requirement
|
50
|
-
none: false
|
51
45
|
requirements:
|
52
|
-
- - ~>
|
46
|
+
- - "~>"
|
53
47
|
- !ruby/object:Gem::Version
|
54
48
|
version: '1.1'
|
55
49
|
type: :runtime
|
56
50
|
prerelease: false
|
57
51
|
version_requirements: !ruby/object:Gem::Requirement
|
58
|
-
none: false
|
59
52
|
requirements:
|
60
|
-
- - ~>
|
53
|
+
- - "~>"
|
61
54
|
- !ruby/object:Gem::Version
|
62
55
|
version: '1.1'
|
63
56
|
- !ruby/object:Gem::Dependency
|
64
57
|
name: formatador
|
65
58
|
requirement: !ruby/object:Gem::Requirement
|
66
|
-
none: false
|
67
59
|
requirements:
|
68
|
-
- - ~>
|
60
|
+
- - "~>"
|
69
61
|
- !ruby/object:Gem::Version
|
70
62
|
version: '0.2'
|
71
63
|
type: :runtime
|
72
64
|
prerelease: false
|
73
65
|
version_requirements: !ruby/object:Gem::Requirement
|
74
|
-
none: false
|
75
66
|
requirements:
|
76
|
-
- - ~>
|
67
|
+
- - "~>"
|
77
68
|
- !ruby/object:Gem::Version
|
78
69
|
version: '0.2'
|
79
70
|
- !ruby/object:Gem::Dependency
|
80
71
|
name: eventmachine
|
81
72
|
requirement: !ruby/object:Gem::Requirement
|
82
|
-
none: false
|
83
73
|
requirements:
|
84
|
-
- - ~>
|
74
|
+
- - "~>"
|
85
75
|
- !ruby/object:Gem::Version
|
86
|
-
version:
|
76
|
+
version: 1.0.4
|
87
77
|
type: :runtime
|
88
78
|
prerelease: false
|
89
79
|
version_requirements: !ruby/object:Gem::Requirement
|
90
|
-
none: false
|
91
80
|
requirements:
|
92
|
-
- - ~>
|
81
|
+
- - "~>"
|
93
82
|
- !ruby/object:Gem::Version
|
94
|
-
version:
|
83
|
+
version: 1.0.4
|
95
84
|
- !ruby/object:Gem::Dependency
|
96
85
|
name: em-proxy
|
97
86
|
requirement: !ruby/object:Gem::Requirement
|
98
|
-
none: false
|
99
87
|
requirements:
|
100
|
-
- - ~>
|
88
|
+
- - "~>"
|
101
89
|
- !ruby/object:Gem::Version
|
102
90
|
version: '0.1'
|
103
91
|
type: :runtime
|
104
92
|
prerelease: false
|
105
93
|
version_requirements: !ruby/object:Gem::Requirement
|
106
|
-
none: false
|
107
94
|
requirements:
|
108
|
-
- - ~>
|
95
|
+
- - "~>"
|
109
96
|
- !ruby/object:Gem::Version
|
110
97
|
version: '0.1'
|
111
98
|
- !ruby/object:Gem::Dependency
|
112
99
|
name: rubydns
|
113
100
|
requirement: !ruby/object:Gem::Requirement
|
114
|
-
none: false
|
115
101
|
requirements:
|
116
|
-
- - ~>
|
102
|
+
- - "~>"
|
117
103
|
- !ruby/object:Gem::Version
|
118
104
|
version: 0.8.5
|
119
105
|
type: :runtime
|
120
106
|
prerelease: false
|
121
107
|
version_requirements: !ruby/object:Gem::Requirement
|
122
|
-
none: false
|
123
108
|
requirements:
|
124
|
-
- - ~>
|
109
|
+
- - "~>"
|
125
110
|
- !ruby/object:Gem::Version
|
126
111
|
version: 0.8.5
|
127
112
|
- !ruby/object:Gem::Dependency
|
128
113
|
name: uuid
|
129
114
|
requirement: !ruby/object:Gem::Requirement
|
130
|
-
none: false
|
131
115
|
requirements:
|
132
|
-
- - ~>
|
116
|
+
- - "~>"
|
133
117
|
- !ruby/object:Gem::Version
|
134
118
|
version: '2.3'
|
135
119
|
type: :runtime
|
136
120
|
prerelease: false
|
137
121
|
version_requirements: !ruby/object:Gem::Requirement
|
138
|
-
none: false
|
139
122
|
requirements:
|
140
|
-
- - ~>
|
123
|
+
- - "~>"
|
141
124
|
- !ruby/object:Gem::Version
|
142
125
|
version: '2.3'
|
143
126
|
- !ruby/object:Gem::Dependency
|
144
127
|
name: facter
|
145
128
|
requirement: !ruby/object:Gem::Requirement
|
146
|
-
none: false
|
147
129
|
requirements:
|
148
|
-
- - ~>
|
130
|
+
- - "~>"
|
149
131
|
- !ruby/object:Gem::Version
|
150
132
|
version: '2.2'
|
151
133
|
type: :runtime
|
152
134
|
prerelease: false
|
153
135
|
version_requirements: !ruby/object:Gem::Requirement
|
154
|
-
none: false
|
155
136
|
requirements:
|
156
|
-
- - ~>
|
137
|
+
- - "~>"
|
157
138
|
- !ruby/object:Gem::Version
|
158
139
|
version: '2.2'
|
159
140
|
- !ruby/object:Gem::Dependency
|
160
141
|
name: http-parser-lite
|
161
142
|
requirement: !ruby/object:Gem::Requirement
|
162
|
-
none: false
|
163
143
|
requirements:
|
164
|
-
- - ~>
|
144
|
+
- - "~>"
|
165
145
|
- !ruby/object:Gem::Version
|
166
146
|
version: '0.6'
|
167
147
|
type: :runtime
|
168
148
|
prerelease: false
|
169
149
|
version_requirements: !ruby/object:Gem::Requirement
|
170
|
-
none: false
|
171
150
|
requirements:
|
172
|
-
- - ~>
|
151
|
+
- - "~>"
|
173
152
|
- !ruby/object:Gem::Version
|
174
153
|
version: '0.6'
|
175
154
|
- !ruby/object:Gem::Dependency
|
176
155
|
name: dotenv
|
177
156
|
requirement: !ruby/object:Gem::Requirement
|
178
|
-
none: false
|
179
157
|
requirements:
|
180
|
-
- - ~>
|
158
|
+
- - "~>"
|
181
159
|
- !ruby/object:Gem::Version
|
182
160
|
version: 1.0.2
|
183
161
|
type: :runtime
|
184
162
|
prerelease: false
|
185
163
|
version_requirements: !ruby/object:Gem::Requirement
|
186
|
-
none: false
|
187
164
|
requirements:
|
188
|
-
- - ~>
|
165
|
+
- - "~>"
|
189
166
|
- !ruby/object:Gem::Version
|
190
167
|
version: 1.0.2
|
191
168
|
- !ruby/object:Gem::Dependency
|
192
169
|
name: rspec
|
193
170
|
requirement: !ruby/object:Gem::Requirement
|
194
|
-
none: false
|
195
171
|
requirements:
|
196
|
-
- - ~>
|
172
|
+
- - "~>"
|
197
173
|
- !ruby/object:Gem::Version
|
198
174
|
version: '3.0'
|
199
175
|
type: :development
|
200
176
|
prerelease: false
|
201
177
|
version_requirements: !ruby/object:Gem::Requirement
|
202
|
-
none: false
|
203
178
|
requirements:
|
204
|
-
- - ~>
|
179
|
+
- - "~>"
|
205
180
|
- !ruby/object:Gem::Version
|
206
181
|
version: '3.0'
|
207
182
|
- !ruby/object:Gem::Dependency
|
208
183
|
name: mocha
|
209
184
|
requirement: !ruby/object:Gem::Requirement
|
210
|
-
none: false
|
211
185
|
requirements:
|
212
|
-
- -
|
186
|
+
- - ">="
|
213
187
|
- !ruby/object:Gem::Version
|
214
188
|
version: '0'
|
215
189
|
type: :development
|
216
190
|
prerelease: false
|
217
191
|
version_requirements: !ruby/object:Gem::Requirement
|
218
|
-
none: false
|
219
192
|
requirements:
|
220
|
-
- -
|
193
|
+
- - ">="
|
221
194
|
- !ruby/object:Gem::Version
|
222
195
|
version: '0'
|
223
196
|
- !ruby/object:Gem::Dependency
|
224
197
|
name: rake
|
225
198
|
requirement: !ruby/object:Gem::Requirement
|
226
|
-
none: false
|
227
199
|
requirements:
|
228
|
-
- -
|
200
|
+
- - ">="
|
229
201
|
- !ruby/object:Gem::Version
|
230
202
|
version: '0'
|
231
203
|
type: :development
|
232
204
|
prerelease: false
|
233
205
|
version_requirements: !ruby/object:Gem::Requirement
|
234
|
-
none: false
|
235
206
|
requirements:
|
236
|
-
- -
|
207
|
+
- - ">="
|
237
208
|
- !ruby/object:Gem::Version
|
238
209
|
version: '0'
|
239
210
|
description: Something small for process management
|
@@ -243,11 +214,11 @@ executables:
|
|
243
214
|
extensions: []
|
244
215
|
extra_rdoc_files: []
|
245
216
|
files:
|
246
|
-
- .coveralls.yml
|
247
|
-
- .gitignore
|
248
|
-
- .rspec
|
249
|
-
- .rubocop.yml
|
250
|
-
- .travis.yml
|
217
|
+
- ".coveralls.yml"
|
218
|
+
- ".gitignore"
|
219
|
+
- ".rspec"
|
220
|
+
- ".rubocop.yml"
|
221
|
+
- ".travis.yml"
|
251
222
|
- Gemfile
|
252
223
|
- MIT-LICENSE
|
253
224
|
- Rakefile
|
@@ -340,30 +311,26 @@ files:
|
|
340
311
|
homepage: http://invoker.codemancers.com
|
341
312
|
licenses:
|
342
313
|
- MIT
|
314
|
+
metadata: {}
|
343
315
|
post_install_message:
|
344
316
|
rdoc_options: []
|
345
317
|
require_paths:
|
346
318
|
- lib
|
347
319
|
required_ruby_version: !ruby/object:Gem::Requirement
|
348
|
-
none: false
|
349
320
|
requirements:
|
350
|
-
- -
|
321
|
+
- - ">="
|
351
322
|
- !ruby/object:Gem::Version
|
352
323
|
version: '0'
|
353
|
-
segments:
|
354
|
-
- 0
|
355
|
-
hash: -1512640655310719335
|
356
324
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
357
|
-
none: false
|
358
325
|
requirements:
|
359
|
-
- -
|
326
|
+
- - ">="
|
360
327
|
- !ruby/object:Gem::Version
|
361
328
|
version: '0'
|
362
329
|
requirements: []
|
363
330
|
rubyforge_project:
|
364
|
-
rubygems_version:
|
331
|
+
rubygems_version: 2.2.2
|
365
332
|
signing_key:
|
366
|
-
specification_version:
|
333
|
+
specification_version: 4
|
367
334
|
summary: Something small for Process management
|
368
335
|
test_files:
|
369
336
|
- spec/invoker/cli/pinger_spec.rb
|
@@ -393,3 +360,4 @@ test_files:
|
|
393
360
|
- spec/invoker/reactor_spec.rb
|
394
361
|
- spec/spec_helper.rb
|
395
362
|
- spec/support/mock_setup_file.rb
|
363
|
+
has_rdoc:
|