invoker 1.3.1 → 1.3.2

Sign up to get free protection for your applications and to get access to all the features.
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")
@@ -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.processes.each { |process_info| process_manager.start_process(process_info) }
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
- make_option_for_subdomain(section, port)
68
- else
69
- make_option(section)
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 make_option_for_subdomain(section, port)
84
- OpenStruct.new(
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)
@@ -43,5 +43,5 @@ module Invoker
43
43
  Version.new(next_splits.join('.'))
44
44
  end
45
45
  end
46
- VERSION = "1.3.1"
46
+ VERSION = "1.3.2"
47
47
  end
@@ -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
- invoker_config.stubs(:processes).returns(
22
- [OpenStruct.new(:label => "foobar", :cmd => "foobar_command", :dir => ENV['HOME'])]
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
- invoker_config.stubs(:processes).returns(
55
- [OpenStruct.new(:label => "foobar", :cmd => "foobar_command", :dir => ENV['HOME'])]
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
@@ -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.1
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-10-29 00:00:00.000000000 Z
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: '1.0'
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: '1.0'
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: 1.8.23.2
331
+ rubygems_version: 2.2.2
365
332
  signing_key:
366
- specification_version: 3
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: