stubby 0.0.10 → 0.0.11

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.
@@ -1,43 +1,49 @@
1
1
  require 'listen'
2
2
 
3
- module Extensions
4
- class Reload
5
- def run!(session, options)
6
- @options = options
7
- @session = session
8
- return if @options[:reload] == false
9
-
10
- listener.start
11
- sleep 1 while @listener
12
- puts 'run! done'
13
- end
3
+ module Stubby
4
+ module Extensions
5
+ class Reload
6
+ def run!(session, options)
7
+ @options = options
8
+ @session = session
9
+ return if @options[:reload] == false
10
+
11
+ listener.start
12
+ sleep 1 while @listener
13
+ puts 'run! done'
14
+ end
14
15
 
15
- def stop!
16
- return if @options[:reload] == false
17
- @listener.stop and @listener = nil if @listener
18
- puts 'stop! done'
19
- end
16
+ def stop!
17
+ return if @options[:reload] == false
18
+ @listener.stop and @listener = nil if @listener
19
+ puts 'stop! done'
20
+ end
20
21
 
21
- private
22
- def root_path
23
- @session.system.root_path
24
- end
22
+ def restore!
25
23
 
26
- def session_config_path
27
- @session.system.session_config_path
28
- end
24
+ end
25
+
26
+ private
27
+ def root_path
28
+ @session.system.root_path
29
+ end
30
+
31
+ def session_config_path
32
+ @session.system.session_config_path
33
+ end
29
34
 
30
- def listener
31
- return @listener if @listener
35
+ def listener
36
+ return @listener if @listener
32
37
 
33
- puts "NEW LISTENER"
38
+ puts "NEW LISTENER"
34
39
 
35
- @listener ||= Listen.to(root_path, debug: true) do |modified, added, removed|
36
- (modified + added).each do |mpath|
37
- puts "[INFO] Detected change, test identical #{mpath}"
38
- if File.identical?(session_config_path, mpath)
39
- puts "[INFO] Detected config change, reloading #{mpath}..."
40
- @session.system.reload
40
+ @listener ||= Listen.to(root_path, debug: true) do |modified, added, removed|
41
+ (modified + added).each do |mpath|
42
+ puts "[INFO] Detected change, test identical #{mpath}"
43
+ if File.identical?(session_config_path, mpath)
44
+ puts "[INFO] Detected config change, reloading #{mpath}..."
45
+ @session.system.reload
46
+ end
41
47
  end
42
48
  end
43
49
  end
@@ -1,46 +1,52 @@
1
1
  require 'mail_catcher'
2
2
 
3
- module Extensions
4
- module SMTP
5
- class Server
6
- def run!(session, options)
7
- @process = Process.fork {
8
- $0 = "stubby: [extension worker sub] Extensions::SMTP::Server"
9
-
10
- sleep 2
11
-
12
- HTTPI.post("http://#{STUBBY_MASTER}:9000/stubs/transient/activate.json",
13
- options: MultiJson.dump(smtp_stub), key: "_smtp")
14
-
15
- MailCatcher.run! smtp_ip: STUBBY_MASTER,
16
- smtp_port: 25,
17
- http_ip: STUBBY_MASTER,
18
- http_port: 9001,
19
- daemon: false
20
- }
21
-
22
- trap("INT", important: true){
23
- stop!
24
- }
25
-
26
- sleep
27
- end
28
-
29
- def smtp_stub
30
- {
31
- "dns://outbox.stubby.dev/a" => "dns-a://#{STUBBY_MASTER}",
32
- "http://outbox.stubby.dev" => "http://#{STUBBY_MASTER}:9001"
33
- }
34
- end
35
-
36
- def expand_rule(trigger, instruction)
37
- {
38
- "#{trigger.gsub("smtp://", "dns://")}/mx" => "dns-mx://#{STUBBY_MASTER}/?priority=10"
39
- }
40
- end
41
-
42
- def stop!
43
- Process.shutdown(@process)
3
+ module Stubby
4
+ module Extensions
5
+ module SMTP
6
+ class Server
7
+ def run!(session, options)
8
+ @process = Process.fork {
9
+ $0 = "stubby: [extension worker sub] Stubby::Extensions::SMTP::Server"
10
+
11
+ sleep 2
12
+
13
+ HTTPI.post("http://#{STUBBY_MASTER}:9000/stubs/transient/activate.json",
14
+ options: MultiJson.dump(smtp_stub), key: "_smtp")
15
+
16
+ MailCatcher.run! smtp_ip: STUBBY_MASTER,
17
+ smtp_port: 25,
18
+ http_ip: STUBBY_MASTER,
19
+ http_port: 9001,
20
+ daemon: false
21
+ }
22
+
23
+ trap("INT", important: true){
24
+ stop!
25
+ }
26
+
27
+ sleep
28
+ end
29
+
30
+ def smtp_stub
31
+ {
32
+ "dns://outbox.stubby.dev/a" => "dns-a://#{STUBBY_MASTER}",
33
+ "http://outbox.stubby.dev" => "http://#{STUBBY_MASTER}:9001"
34
+ }
35
+ end
36
+
37
+ def expand_rule(trigger, instruction)
38
+ {
39
+ "#{trigger.gsub("smtp://", "dns://")}/mx" => "dns-mx://#{STUBBY_MASTER}/?priority=10"
40
+ }
41
+ end
42
+
43
+ def stop!
44
+ Process.shutdown(@process)
45
+ end
46
+
47
+ def restore!
48
+ # nil
49
+ end
44
50
  end
45
51
  end
46
52
  end
data/lib/stubby/master.rb CHANGED
@@ -128,6 +128,15 @@ module Stubby
128
128
  stub.search(params[:trigger])
129
129
  }.compact.first
130
130
  end
131
+
132
+ post "/stop.json" do
133
+ Thread.new do
134
+ sleep 1
135
+ Process.kill("INT", Process.pid)
136
+ end
137
+
138
+ json status: "ok"
139
+ end
131
140
  end
132
141
 
133
142
  class Master
@@ -135,11 +144,11 @@ module Stubby
135
144
 
136
145
  def initialize(environments)
137
146
  @extensions = {
138
- default: Extensions::Default.new,
139
- dns: Extensions::DNS::Server.new,
140
- http: Extensions::HTTP::Server.new,
141
- https: Extensions::HTTP::SSLServer.new,
142
- smtp: Extensions::SMTP::Server.new
147
+ default: Stubby::Extensions::Default.new,
148
+ dns: Stubby::Extensions::DNS::Server.new,
149
+ http: Stubby::Extensions::HTTP::Server.new,
150
+ https: Stubby::Extensions::HTTP::SSLServer.new,
151
+ smtp: Stubby::Extensions::SMTP::Server.new
143
152
  }
144
153
 
145
154
  @config = Api
@@ -171,6 +180,23 @@ module Stubby
171
180
  end
172
181
  end
173
182
 
183
+ def restore!
184
+ restore_extensions
185
+ end
186
+
187
+ def stop!
188
+ puts "Shutting down..."
189
+
190
+ Api.stop!
191
+
192
+ running.each do |process|
193
+ Process.shutdown(process)
194
+ end
195
+
196
+ puts "Bye."
197
+ end
198
+
199
+
174
200
  private
175
201
  def read_key
176
202
  File.read(keyfile)
@@ -209,16 +235,10 @@ module Stubby
209
235
  end
210
236
  end
211
237
 
212
- def stop!
213
- puts "Shutting down..."
214
-
215
- Api.stop!
216
-
217
- running.each do |process|
218
- Process.shutdown(process)
238
+ def restore_extensions
239
+ @extensions.each do |name, plugin|
240
+ plugin.restore!
219
241
  end
220
-
221
- puts "Bye."
222
242
  end
223
243
 
224
244
  def running
@@ -1,4 +1,3 @@
1
- require 'pry'
2
1
  require 'httpi'
3
2
 
4
3
  module Stubby
metadata CHANGED
@@ -1,7 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stubby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.10
4
+ version: 0.0.11
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - James Kassemi
@@ -9,25 +10,28 @@ authors:
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2014-03-04 00:00:00.000000000 Z
13
+ date: 2014-03-05 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: bundler
16
17
  requirement: !ruby/object:Gem::Requirement
18
+ none: false
17
19
  requirements:
18
- - - '>='
20
+ - - ! '>='
19
21
  - !ruby/object:Gem::Version
20
22
  version: '0'
21
23
  type: :runtime
22
24
  prerelease: false
23
25
  version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
24
27
  requirements:
25
- - - '>='
28
+ - - ! '>='
26
29
  - !ruby/object:Gem::Version
27
30
  version: '0'
28
31
  - !ruby/object:Gem::Dependency
29
32
  name: rubydns
30
33
  requirement: !ruby/object:Gem::Requirement
34
+ none: false
31
35
  requirements:
32
36
  - - '='
33
37
  - !ruby/object:Gem::Version
@@ -35,6 +39,7 @@ dependencies:
35
39
  type: :runtime
36
40
  prerelease: false
37
41
  version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
38
43
  requirements:
39
44
  - - '='
40
45
  - !ruby/object:Gem::Version
@@ -42,6 +47,7 @@ dependencies:
42
47
  - !ruby/object:Gem::Dependency
43
48
  name: liquid
44
49
  requirement: !ruby/object:Gem::Requirement
50
+ none: false
45
51
  requirements:
46
52
  - - '='
47
53
  - !ruby/object:Gem::Version
@@ -49,6 +55,7 @@ dependencies:
49
55
  type: :runtime
50
56
  prerelease: false
51
57
  version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
52
59
  requirements:
53
60
  - - '='
54
61
  - !ruby/object:Gem::Version
@@ -56,6 +63,7 @@ dependencies:
56
63
  - !ruby/object:Gem::Dependency
57
64
  name: multi_json
58
65
  requirement: !ruby/object:Gem::Requirement
66
+ none: false
59
67
  requirements:
60
68
  - - '='
61
69
  - !ruby/object:Gem::Version
@@ -63,6 +71,7 @@ dependencies:
63
71
  type: :runtime
64
72
  prerelease: false
65
73
  version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
66
75
  requirements:
67
76
  - - '='
68
77
  - !ruby/object:Gem::Version
@@ -70,6 +79,7 @@ dependencies:
70
79
  - !ruby/object:Gem::Dependency
71
80
  name: sinatra
72
81
  requirement: !ruby/object:Gem::Requirement
82
+ none: false
73
83
  requirements:
74
84
  - - '='
75
85
  - !ruby/object:Gem::Version
@@ -77,6 +87,7 @@ dependencies:
77
87
  type: :runtime
78
88
  prerelease: false
79
89
  version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
80
91
  requirements:
81
92
  - - '='
82
93
  - !ruby/object:Gem::Version
@@ -84,6 +95,7 @@ dependencies:
84
95
  - !ruby/object:Gem::Dependency
85
96
  name: sinatra-contrib
86
97
  requirement: !ruby/object:Gem::Requirement
98
+ none: false
87
99
  requirements:
88
100
  - - '='
89
101
  - !ruby/object:Gem::Version
@@ -91,6 +103,7 @@ dependencies:
91
103
  type: :runtime
92
104
  prerelease: false
93
105
  version_requirements: !ruby/object:Gem::Requirement
106
+ none: false
94
107
  requirements:
95
108
  - - '='
96
109
  - !ruby/object:Gem::Version
@@ -98,6 +111,7 @@ dependencies:
98
111
  - !ruby/object:Gem::Dependency
99
112
  name: rack-ssl
100
113
  requirement: !ruby/object:Gem::Requirement
114
+ none: false
101
115
  requirements:
102
116
  - - '='
103
117
  - !ruby/object:Gem::Version
@@ -105,6 +119,7 @@ dependencies:
105
119
  type: :runtime
106
120
  prerelease: false
107
121
  version_requirements: !ruby/object:Gem::Requirement
122
+ none: false
108
123
  requirements:
109
124
  - - '='
110
125
  - !ruby/object:Gem::Version
@@ -112,6 +127,7 @@ dependencies:
112
127
  - !ruby/object:Gem::Dependency
113
128
  name: dns-zonefile
114
129
  requirement: !ruby/object:Gem::Requirement
130
+ none: false
115
131
  requirements:
116
132
  - - '='
117
133
  - !ruby/object:Gem::Version
@@ -119,6 +135,7 @@ dependencies:
119
135
  type: :runtime
120
136
  prerelease: false
121
137
  version_requirements: !ruby/object:Gem::Requirement
138
+ none: false
122
139
  requirements:
123
140
  - - '='
124
141
  - !ruby/object:Gem::Version
@@ -126,6 +143,7 @@ dependencies:
126
143
  - !ruby/object:Gem::Dependency
127
144
  name: ipaddress
128
145
  requirement: !ruby/object:Gem::Requirement
146
+ none: false
129
147
  requirements:
130
148
  - - '='
131
149
  - !ruby/object:Gem::Version
@@ -133,6 +151,7 @@ dependencies:
133
151
  type: :runtime
134
152
  prerelease: false
135
153
  version_requirements: !ruby/object:Gem::Requirement
154
+ none: false
136
155
  requirements:
137
156
  - - '='
138
157
  - !ruby/object:Gem::Version
@@ -140,6 +159,7 @@ dependencies:
140
159
  - !ruby/object:Gem::Dependency
141
160
  name: httpi
142
161
  requirement: !ruby/object:Gem::Requirement
162
+ none: false
143
163
  requirements:
144
164
  - - '='
145
165
  - !ruby/object:Gem::Version
@@ -147,6 +167,7 @@ dependencies:
147
167
  type: :runtime
148
168
  prerelease: false
149
169
  version_requirements: !ruby/object:Gem::Requirement
170
+ none: false
150
171
  requirements:
151
172
  - - '='
152
173
  - !ruby/object:Gem::Version
@@ -154,6 +175,7 @@ dependencies:
154
175
  - !ruby/object:Gem::Dependency
155
176
  name: thor
156
177
  requirement: !ruby/object:Gem::Requirement
178
+ none: false
157
179
  requirements:
158
180
  - - '='
159
181
  - !ruby/object:Gem::Version
@@ -161,6 +183,7 @@ dependencies:
161
183
  type: :runtime
162
184
  prerelease: false
163
185
  version_requirements: !ruby/object:Gem::Requirement
186
+ none: false
164
187
  requirements:
165
188
  - - '='
166
189
  - !ruby/object:Gem::Version
@@ -168,6 +191,7 @@ dependencies:
168
191
  - !ruby/object:Gem::Dependency
169
192
  name: listen
170
193
  requirement: !ruby/object:Gem::Requirement
194
+ none: false
171
195
  requirements:
172
196
  - - '='
173
197
  - !ruby/object:Gem::Version
@@ -175,6 +199,7 @@ dependencies:
175
199
  type: :runtime
176
200
  prerelease: false
177
201
  version_requirements: !ruby/object:Gem::Requirement
202
+ none: false
178
203
  requirements:
179
204
  - - '='
180
205
  - !ruby/object:Gem::Version
@@ -182,6 +207,7 @@ dependencies:
182
207
  - !ruby/object:Gem::Dependency
183
208
  name: oj
184
209
  requirement: !ruby/object:Gem::Requirement
210
+ none: false
185
211
  requirements:
186
212
  - - '='
187
213
  - !ruby/object:Gem::Version
@@ -189,6 +215,7 @@ dependencies:
189
215
  type: :runtime
190
216
  prerelease: false
191
217
  version_requirements: !ruby/object:Gem::Requirement
218
+ none: false
192
219
  requirements:
193
220
  - - '='
194
221
  - !ruby/object:Gem::Version
@@ -196,6 +223,7 @@ dependencies:
196
223
  - !ruby/object:Gem::Dependency
197
224
  name: thin
198
225
  requirement: !ruby/object:Gem::Requirement
226
+ none: false
199
227
  requirements:
200
228
  - - '='
201
229
  - !ruby/object:Gem::Version
@@ -203,6 +231,7 @@ dependencies:
203
231
  type: :runtime
204
232
  prerelease: false
205
233
  version_requirements: !ruby/object:Gem::Requirement
234
+ none: false
206
235
  requirements:
207
236
  - - '='
208
237
  - !ruby/object:Gem::Version
@@ -210,6 +239,7 @@ dependencies:
210
239
  - !ruby/object:Gem::Dependency
211
240
  name: mailcatcher
212
241
  requirement: !ruby/object:Gem::Requirement
242
+ none: false
213
243
  requirements:
214
244
  - - '='
215
245
  - !ruby/object:Gem::Version
@@ -217,50 +247,57 @@ dependencies:
217
247
  type: :runtime
218
248
  prerelease: false
219
249
  version_requirements: !ruby/object:Gem::Requirement
250
+ none: false
220
251
  requirements:
221
252
  - - '='
222
253
  - !ruby/object:Gem::Version
223
254
  version: 0.5.12
224
255
  - !ruby/object:Gem::Dependency
225
- name: curb
256
+ name: httpclient
226
257
  requirement: !ruby/object:Gem::Requirement
258
+ none: false
227
259
  requirements:
228
- - - '>='
260
+ - - ! '>='
229
261
  - !ruby/object:Gem::Version
230
262
  version: '0'
231
263
  type: :runtime
232
264
  prerelease: false
233
265
  version_requirements: !ruby/object:Gem::Requirement
266
+ none: false
234
267
  requirements:
235
- - - '>='
268
+ - - ! '>='
236
269
  - !ruby/object:Gem::Version
237
270
  version: '0'
238
271
  - !ruby/object:Gem::Dependency
239
272
  name: rspec
240
273
  requirement: !ruby/object:Gem::Requirement
274
+ none: false
241
275
  requirements:
242
- - - '>='
276
+ - - ! '>='
243
277
  - !ruby/object:Gem::Version
244
278
  version: '0'
245
279
  type: :development
246
280
  prerelease: false
247
281
  version_requirements: !ruby/object:Gem::Requirement
282
+ none: false
248
283
  requirements:
249
- - - '>='
284
+ - - ! '>='
250
285
  - !ruby/object:Gem::Version
251
286
  version: '0'
252
287
  - !ruby/object:Gem::Dependency
253
288
  name: pry
254
289
  requirement: !ruby/object:Gem::Requirement
290
+ none: false
255
291
  requirements:
256
- - - '>='
292
+ - - ! '>='
257
293
  - !ruby/object:Gem::Version
258
294
  version: '0'
259
295
  type: :development
260
296
  prerelease: false
261
297
  version_requirements: !ruby/object:Gem::Requirement
298
+ none: false
262
299
  requirements:
263
- - - '>='
300
+ - - ! '>='
264
301
  - !ruby/object:Gem::Version
265
302
  version: '0'
266
303
  description:
@@ -292,25 +329,26 @@ files:
292
329
  homepage: http://github.com/jkassemi/stubby
293
330
  licenses:
294
331
  - MIT
295
- metadata: {}
296
332
  post_install_message:
297
333
  rdoc_options: []
298
334
  require_paths:
299
335
  - lib
300
336
  required_ruby_version: !ruby/object:Gem::Requirement
337
+ none: false
301
338
  requirements:
302
- - - '>='
339
+ - - ! '>='
303
340
  - !ruby/object:Gem::Version
304
341
  version: '0'
305
342
  required_rubygems_version: !ruby/object:Gem::Requirement
343
+ none: false
306
344
  requirements:
307
- - - '>='
345
+ - - ! '>='
308
346
  - !ruby/object:Gem::Version
309
347
  version: 1.8.23
310
348
  requirements: []
311
349
  rubyforge_project: stubby
312
- rubygems_version: 2.0.3
350
+ rubygems_version: 1.8.23
313
351
  signing_key:
314
- specification_version: 4
352
+ specification_version: 3
315
353
  summary: Declarative hosts / proxy management for multi-environment development
316
354
  test_files: []