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 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: