isomorfeus-puppetmaster 0.2.5 → 0.3.0
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 +4 -4
- data/README.md +4 -7
- data/lib/isomorfeus/puppetmaster/document.rb +31 -0
- data/lib/isomorfeus/puppetmaster/driver/jsdom.rb +2 -2
- data/lib/isomorfeus/puppetmaster/driver/jsdom_document.rb +2 -2
- data/lib/isomorfeus/puppetmaster/driver/puppeteer.rb +7 -16
- data/lib/isomorfeus/puppetmaster/driver/puppeteer_document.rb +17 -38
- data/lib/isomorfeus/puppetmaster/driver/puppeteer_node.rb +5 -26
- data/lib/isomorfeus/puppetmaster/driver_registration.rb +0 -8
- data/lib/isomorfeus/puppetmaster/server_registration.rb +3 -5
- data/lib/isomorfeus/puppetmaster/version.rb +2 -2
- metadata +11 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 422c2bb4f0581a37a50491b60bfb2b0a44b96acd903c8aaf5460d233d70eb8bf
|
4
|
+
data.tar.gz: cc52402be32baecea8e5d70071cdc9d94684ab682eec4e36f124b9185130869b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 89f9b3910c274388f23623aded55d5ac5e94d620ff77586bd6f597b6cb723540b9c91d586a4f7e95e869b801832a2dee13f9db88706a32578a2e7ce3e5b52bb1
|
7
|
+
data.tar.gz: 0e79a45d2fd530702f95180cb5710b9e304244b76bfe8fe0f59ca2e62c71a349d4c8fb0704e9fc3a93f59df5731187f1086660077c7e385ff5986b2796f3d58a
|
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# isomorfeus-puppetmaster
|
2
2
|
|
3
3
|
A framework for acceptance tests or simply running tests in a headless browser.
|
4
|
-
Comes with drivers for chromium headless
|
4
|
+
Comes with drivers for chromium headless and jsdom.
|
5
5
|
Allows for writing javascript tests in pure ruby.
|
6
6
|
|
7
7
|
### Community and Support
|
@@ -19,10 +19,9 @@ In Gemfile:
|
|
19
19
|
|
20
20
|
Also requires the following npm modules with recommended versions:
|
21
21
|
|
22
|
-
- [puppeteer
|
23
|
-
- [
|
24
|
-
- [
|
25
|
-
- [canvas 2.4.1](https://github.com/Automattic/node-canvas) - for the jsdom driver (optional)
|
22
|
+
- [puppeteer 2.0.0](https://github.com/GoogleChrome/puppeteer#readme) - for the chromium driver
|
23
|
+
- [jsdom 15.2.1](https://github.com/jsdom/jsdom#readme) - for the jsdom driver
|
24
|
+
- [canvas 2.6.0](https://github.com/Automattic/node-canvas) - for the jsdom driver (optional)
|
26
25
|
|
27
26
|
Simply install them in your projects root. Puppetmaster also depends on isomorfeus-speednode, which will be installed automatically.
|
28
27
|
Speednode will pickup the node modules then from the projects root node_modules directory.
|
@@ -33,8 +32,6 @@ Puppetmaster provides these drivers:
|
|
33
32
|
- chromium - a real browser, headless, fast
|
34
33
|
- chromium_wsl - as above but with options so it can execute within the Windows Linux WSL
|
35
34
|
- chromium_debug - opens a chromium browser window with devtools enabled, useful for debugging tests
|
36
|
-
- firefox - real firefox, running headless, not so fast
|
37
|
-
- firefox_debug - opens a firefox browser window with devtools enabled, useful for debugging tests
|
38
35
|
- jsdom - provides a dom implementation in javascript, can execute javascript in the document, super fast, headless, has certain limitations,
|
39
36
|
especially because its not rendering anything (no element bounding box, etc.)
|
40
37
|
- jsdom_canvas - jsdom driver with additional support for 'canvas', requires certain libraries to be installed, see: [canvas at github](https://github.com/Automattic/node-canvas)
|
@@ -69,6 +69,37 @@ module Isomorfeus
|
|
69
69
|
@driver.browser
|
70
70
|
end
|
71
71
|
|
72
|
+
def await_ruby(ruby_source = '', &block)
|
73
|
+
ruby_source = Isomorfeus::Puppetmaster.block_source_code(&block) if block_given?
|
74
|
+
ruby_source = "#{ruby_source}.then { |result| $promise_result = result; $promise_resolved = true }.fail { |result| $promise_result = result; $promise_resolved = true }"
|
75
|
+
compiled_ruby = compile_ruby_source(ruby_source)
|
76
|
+
if compiled_ruby.start_with?('/*')
|
77
|
+
start_of_code = compiled_ruby.index('*/') + 3
|
78
|
+
compiled_ruby = compiled_ruby[start_of_code..-1]
|
79
|
+
end
|
80
|
+
evaluate_script <<~JAVASCRIPT
|
81
|
+
(function(){
|
82
|
+
Opal.gvars.promise_resolved = false;
|
83
|
+
return #{compiled_ruby}
|
84
|
+
})()
|
85
|
+
JAVASCRIPT
|
86
|
+
have_result = false
|
87
|
+
start = Time.now
|
88
|
+
until have_result do
|
89
|
+
break if (Time.now - start) > 30
|
90
|
+
have_result = evaluate_script 'Opal.gvars.promise_resolved'
|
91
|
+
sleep 0.1 unless have_result
|
92
|
+
end
|
93
|
+
execute_script <<~JAVASCRIPT
|
94
|
+
var result;
|
95
|
+
if (typeof Opal.gvars.promise_result.$to_n === 'function') { result = Opal.gvars.promise_result.$to_n(); }
|
96
|
+
else { result = Opal.gvars.promise_result };
|
97
|
+
delete Opal.gvars.promise_result;
|
98
|
+
delete Opal.gvars.promise_resolved;
|
99
|
+
return result;
|
100
|
+
JAVASCRIPT
|
101
|
+
end
|
102
|
+
|
72
103
|
def evaluate_ruby(ruby_source = '', &block)
|
73
104
|
ruby_source = Isomorfeus::Puppetmaster.block_source_code(&block) if block_given?
|
74
105
|
compiled_ruby = compile_ruby_source(ruby_source)
|
@@ -222,7 +222,7 @@ module Isomorfeus
|
|
222
222
|
def determine_error(message)
|
223
223
|
if message.include?('Error: certificate has expired')
|
224
224
|
Isomorfeus::Puppetmaster::CertificateError.new(message) unless @ignore_https_errors
|
225
|
-
elsif message.include?('Error: getaddrinfo
|
225
|
+
elsif message.include?('Error: getaddrinfo')
|
226
226
|
Isomorfeus::Puppetmaster::DNSError.new(message)
|
227
227
|
elsif message.include?('Unknown key: ')
|
228
228
|
Isomorfeus::Puppetmaster::KeyError.new(message)
|
@@ -280,7 +280,7 @@ module Isomorfeus
|
|
280
280
|
LastRes = null;
|
281
281
|
LastExecutionFinished = false;
|
282
282
|
|
283
|
-
if (err) { return [null, err.
|
283
|
+
if (err) { return [null, err.toString() + "\\n" + err.stack]; }
|
284
284
|
else { return [res, null]; }
|
285
285
|
|
286
286
|
} else {
|
@@ -284,7 +284,7 @@ module Isomorfeus
|
|
284
284
|
@context.eval <<~JAVASCRIPT
|
285
285
|
AllDomHandles[#{document.handle}].window.eval(
|
286
286
|
"var arguments = #{ "#{args}".gsub('"', '\"') };" +
|
287
|
-
"#{script.gsub('\\', '\\\\\\').gsub('"', '\"').gsub("\n", "\\n")}"
|
287
|
+
"#{script.strip.gsub('\\', '\\\\\\').gsub('"', '\"').gsub("\n", "\\n")}"
|
288
288
|
)
|
289
289
|
JAVASCRIPT
|
290
290
|
rescue ExecJS::ProgramError => e
|
@@ -295,7 +295,7 @@ module Isomorfeus
|
|
295
295
|
@context.eval <<~JAVASCRIPT
|
296
296
|
AllDomHandles[#{document.handle}].window.eval(
|
297
297
|
"(function() { var arguments = #{ "#{args}".gsub('"', '\"') };" +
|
298
|
-
"#{script.gsub('\\', '\\\\\\').gsub('"', '\"').gsub("\n", "\\n")}" +
|
298
|
+
"#{script.strip.gsub('\\', '\\\\\\').gsub('"', '\"').gsub("\n", "\\n")}" +
|
299
299
|
"})()"
|
300
300
|
)
|
301
301
|
JAVASCRIPT
|
@@ -246,12 +246,6 @@ module Isomorfeus
|
|
246
246
|
@context.eval 'LastExecutionFinished'
|
247
247
|
end
|
248
248
|
|
249
|
-
def firefox_require
|
250
|
-
<<~JAVASCRIPT
|
251
|
-
const MasterPuppeteer = require('puppeteer-firefox');
|
252
|
-
JAVASCRIPT
|
253
|
-
end
|
254
|
-
|
255
249
|
def get_result
|
256
250
|
res, err_msg = @context.eval 'GetLastResult()'
|
257
251
|
raise determine_error(err_msg) if err_msg
|
@@ -282,11 +276,10 @@ module Isomorfeus
|
|
282
276
|
def puppeteer_launch
|
283
277
|
# todo target_handle, puppeteer save path
|
284
278
|
puppeteer_require = case @browser_type
|
285
|
-
when :firefox then firefox_require
|
286
279
|
when :chrome then chromium_require
|
287
280
|
when :chromium then chromium_require
|
288
281
|
else
|
289
|
-
raise "Browser type #{@browser_type} not supported!
|
282
|
+
raise "Browser type #{@browser_type} not supported!"
|
290
283
|
end
|
291
284
|
<<~JAVASCRIPT
|
292
285
|
#{puppeteer_require}
|
@@ -314,7 +307,7 @@ module Isomorfeus
|
|
314
307
|
LastRes = null;
|
315
308
|
LastExecutionFinished = false;
|
316
309
|
|
317
|
-
if (err) { return [null, err.
|
310
|
+
if (err) { return [null, err.toString() + "\\n" + err.stack]; }
|
318
311
|
else { return [res, null]; }
|
319
312
|
|
320
313
|
} else {
|
@@ -370,13 +363,11 @@ module Isomorfeus
|
|
370
363
|
CurrentBrowser = #{launch_line}
|
371
364
|
var page = (await CurrentBrowser.pages())[0];
|
372
365
|
page.setDefaultTimeout(#{@puppeteer_timeout});
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
await cdp_session.detach();
|
379
|
-
}
|
366
|
+
var target = page.target();
|
367
|
+
var cdp_session = await target.createCDPSession();
|
368
|
+
await cdp_session.send('Page.setDownloadBehavior', {behavior: 'allow', downloadPath: '#{Isomorfeus::Puppetmaster.download_path}'});
|
369
|
+
if (#{@url_blacklist}.length > 0) { await cdp_session.send('Network.setBlockedURLs', {urls: #{@url_blacklist}}); }
|
370
|
+
await cdp_session.detach();
|
380
371
|
LastResult = RegisterPage(page);
|
381
372
|
LastExecutionFinished = true;
|
382
373
|
} catch (err) {
|
@@ -126,11 +126,9 @@ module Isomorfeus
|
|
126
126
|
|
127
127
|
def document_clear_url_blacklist(document)
|
128
128
|
await <<~JAVASCRIPT
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
await cdp_session.detach();
|
133
|
-
}
|
129
|
+
var cdp_session = await AllPageHandles[#{document.handle}].target().createCDPSession();
|
130
|
+
await cdp_session.send('Network.setBlockedURLs', {urls: []});
|
131
|
+
await cdp_session.detach();
|
134
132
|
JAVASCRIPT
|
135
133
|
end
|
136
134
|
|
@@ -152,12 +150,7 @@ module Isomorfeus
|
|
152
150
|
}, #{@puppeteer_reaction_timeout});
|
153
151
|
});
|
154
152
|
AllPageHandles[#{document.handle}].on('response', response_handler);
|
155
|
-
var navigation_watcher;
|
156
|
-
if (BrowserType === 'firefox') {
|
157
|
-
navigation_watcher = AllPageHandles[#{document.handle}].waitFor(1000);
|
158
|
-
} else {
|
159
|
-
navigation_watcher = AllPageHandles[#{document.handle}].waitForNavigation();
|
160
|
-
}
|
153
|
+
var navigation_watcher = AllPageHandles[#{document.handle}].waitForNavigation();
|
161
154
|
await AllPageHandles[#{document.handle}].evaluate(function(){
|
162
155
|
var options = {button: 0, bubbles: true, cancelable: true};
|
163
156
|
var node = window;
|
@@ -290,12 +283,7 @@ module Isomorfeus
|
|
290
283
|
}, #{@puppeteer_reaction_timeout});
|
291
284
|
});
|
292
285
|
AllPageHandlers[#{document.handle}].on('response', response_handler);
|
293
|
-
var navigation_watcher;
|
294
|
-
if (BrowserType === 'firefox') {
|
295
|
-
navigation_watcher = AllPageHandles[#{document.handle}].waitFor(1000);
|
296
|
-
} else {
|
297
|
-
navigation_watcher = AllPageHandles[#{document.handle}].waitForNavigation();
|
298
|
-
}
|
286
|
+
var navigation_watcher = AllPageHandles[#{document.handle}].waitForNavigation();
|
299
287
|
await AllPageHandles[#{document.handle}].evaluate(function(){
|
300
288
|
var options = {button: 0, bubbles: true, cancelable: true};
|
301
289
|
var node = window;
|
@@ -323,7 +311,7 @@ module Isomorfeus
|
|
323
311
|
def document_evaluate_script(document, script, *args)
|
324
312
|
await <<~JAVASCRIPT
|
325
313
|
LastResult = await AllPageHandles[#{document.handle}].evaluate((arguments) => {
|
326
|
-
return #{script}
|
314
|
+
return #{script.strip}
|
327
315
|
}, #{args});
|
328
316
|
JAVASCRIPT
|
329
317
|
end
|
@@ -331,7 +319,7 @@ module Isomorfeus
|
|
331
319
|
def document_execute_script(document, script, *args)
|
332
320
|
await <<~JAVASCRIPT
|
333
321
|
LastResult = await AllPageHandles[#{document.handle}].evaluate((arguments) => {
|
334
|
-
#{script}
|
322
|
+
#{script.strip}
|
335
323
|
}, #{args});
|
336
324
|
JAVASCRIPT
|
337
325
|
end
|
@@ -589,13 +577,11 @@ module Isomorfeus
|
|
589
577
|
var url = '#{parsed_uri.to_s}';
|
590
578
|
new_page.setDefaultTimeout(#{@puppeteer_timeout});
|
591
579
|
await new_page.setViewport({width: #{@width}, height: #{@height}});
|
592
|
-
|
593
|
-
|
594
|
-
|
595
|
-
|
596
|
-
|
597
|
-
await cdp_session.detach();
|
598
|
-
}
|
580
|
+
var new_target = new_page.target();
|
581
|
+
var cdp_session = await new_target.createCDPSession();
|
582
|
+
await cdp_session.send('Page.setDownloadBehavior', {behavior: 'allow', downloadPath: '#{Isomorfeus::Puppetmaster.download_path}'});
|
583
|
+
if (#{@url_blacklist}.length > 0) { await cdp_session.send('Network.setBlockedURLs', {urls: #{@url_blacklist}}); }
|
584
|
+
await cdp_session.detach();
|
599
585
|
var page_handle = RegisterPage(new_page);
|
600
586
|
var result_response = null;
|
601
587
|
if (url && url !== '') {
|
@@ -677,12 +663,7 @@ module Isomorfeus
|
|
677
663
|
}, #{@puppeteer_reaction_timeout});
|
678
664
|
});
|
679
665
|
AllPageHandles[#{document.handle}].on('response', response_handler);
|
680
|
-
var navigation_watcher;
|
681
|
-
if (BrowserType === 'firefox') {
|
682
|
-
navigation_watcher = AllPageHandles[#{document.handle}].waitFor(1000);
|
683
|
-
} else {
|
684
|
-
navigation_watcher = AllPageHandles[#{document.handle}].waitForNavigation();
|
685
|
-
}
|
666
|
+
var navigation_watcher = AllPageHandles[#{document.handle}].waitForNavigation();
|
686
667
|
await AllPageHandles[#{document.handle}].evaluate(function(){
|
687
668
|
var options = {button: 2, bubbles: true, cancelable: true};
|
688
669
|
var node = window;
|
@@ -780,18 +761,16 @@ module Isomorfeus
|
|
780
761
|
end
|
781
762
|
|
782
763
|
def document_set_extra_headers(document, headers_hash)
|
783
|
-
await "await AllPageHandles[#{document.handle}].setExtraHTTPHeaders(
|
764
|
+
await "await AllPageHandles[#{document.handle}].setExtraHTTPHeaders(#{Oj.dump(headers_hash, mode: :strict)});"
|
784
765
|
end
|
785
766
|
|
786
767
|
def document_set_url_blacklist(document, url_array)
|
787
768
|
# https://www.chromium.org/administrators/url-blacklist-filter-format
|
788
769
|
@url_blacklist = url_array
|
789
770
|
await <<~JAVASCRIPT
|
790
|
-
|
791
|
-
|
792
|
-
|
793
|
-
await cdp_session.detach();
|
794
|
-
}
|
771
|
+
var cdp_session = await AllPageHandles[#{document.handle}].target().createCDPSession();
|
772
|
+
await cdp_session.send('Network.setBlockedURLs', {urls: #{url_array}});
|
773
|
+
await cdp_session.detach();
|
795
774
|
JAVASCRIPT
|
796
775
|
end
|
797
776
|
|
@@ -27,12 +27,7 @@ module Isomorfeus
|
|
27
27
|
}, #{@puppeteer_reaction_timeout});
|
28
28
|
});
|
29
29
|
AllPageHandles[#{node.document.handle}].on('response', response_handler);
|
30
|
-
var navigation_watcher;
|
31
|
-
if (BrowserType === 'firefox') {
|
32
|
-
navigation_watcher = AllPageHandles[#{node.document.handle}].waitFor(1000);
|
33
|
-
} else {
|
34
|
-
navigation_watcher = AllPageHandles[#{node.document.handle}].waitForNavigation();
|
35
|
-
}
|
30
|
+
var navigation_watcher = AllPageHandles[#{node.document.handle}].waitForNavigation();
|
36
31
|
await AllElementHandles[#{node.handle}].executionContext().evaluate(function(node){
|
37
32
|
var options = {button: 0, bubbles: true, cancelable: true};
|
38
33
|
var x = #{x ? x : 'null'};
|
@@ -95,12 +90,7 @@ module Isomorfeus
|
|
95
90
|
}, #{@puppeteer_reaction_timeout});
|
96
91
|
});
|
97
92
|
AllPageHandles[#{node.document.handle}].on('response', response_handler);
|
98
|
-
var navigation_watcher;
|
99
|
-
if (BrowserType === 'firefox') {
|
100
|
-
navigation_watcher = AllPageHandles[#{node.document.handle}].waitFor(1000);
|
101
|
-
} else {
|
102
|
-
navigation_watcher = AllPageHandles[#{node.document.handle}].waitForNavigation();
|
103
|
-
}
|
93
|
+
var navigation_watcher = AllPageHandles[#{node.document.handle}].waitForNavigation();
|
104
94
|
await AllElementHandles[#{node.handle}].executionContext().evaluate(function(node){
|
105
95
|
var options = {button: 0, bubbles: true, cancelable: true};
|
106
96
|
var x = #{x ? x : 'null'};
|
@@ -297,7 +287,7 @@ module Isomorfeus
|
|
297
287
|
def node_evaluate_script(node, script, *args)
|
298
288
|
await <<~JAVASCRIPT
|
299
289
|
var node_handle = #{node.handle};
|
300
|
-
await AllElementHandles[node_handle].executionContext().evaluateHandle((node, arguments) => {
|
290
|
+
handle = await AllElementHandles[node_handle].executionContext().evaluateHandle((node, arguments) => {
|
301
291
|
arguments.unshift(node);
|
302
292
|
return #{script};
|
303
293
|
}, AllElementHandles[node_handle], #{args[1..-1]});
|
@@ -475,12 +465,7 @@ module Isomorfeus
|
|
475
465
|
}, #{@puppeteer_reaction_timeout});
|
476
466
|
});
|
477
467
|
AllPageHandles[#{node.document.handle}].on('response', response_handler);
|
478
|
-
var navigation_watcher;
|
479
|
-
if (BrowserType === 'firefox') {
|
480
|
-
navigation_watcher = AllPageHandles[#{node.document.handle}].waitFor(1000);
|
481
|
-
} else {
|
482
|
-
navigation_watcher = AllPageHandles[#{node.document.handle}].waitForNavigation();
|
483
|
-
}
|
468
|
+
var navigation_watcher = AllPageHandles[#{node.document.handle}].waitForNavigation();
|
484
469
|
await AllElementHandles[#{node.handle}].executionContext().evaluate(function(node){
|
485
470
|
var options = {button: 2, bubbles: true, cancelable: true};
|
486
471
|
var x = #{x ? x : 'null'};
|
@@ -571,13 +556,7 @@ module Isomorfeus
|
|
571
556
|
def node_style(node, *styles)
|
572
557
|
await <<~JAVASCRIPT
|
573
558
|
var handle = await AllElementHandles[#{node.handle}].executionContext().evaluateHandle(function(node, styles){
|
574
|
-
|
575
|
-
if (styles.length > 0) {
|
576
|
-
return styles.reduce(function(res,name) {
|
577
|
-
res[name] = style[name];
|
578
|
-
return res;
|
579
|
-
}, {});
|
580
|
-
} else { return style; }
|
559
|
+
return = window.getComputedStyle(node);
|
581
560
|
}, AllElementHandles[#{node.handle}], #{styles});
|
582
561
|
LastResult = await handle.jsonValue();
|
583
562
|
JAVASCRIPT
|
@@ -10,14 +10,6 @@ Isomorfeus::Puppetmaster.register_driver(:chromium_debug) do |app|
|
|
10
10
|
Isomorfeus::Puppetmaster::Driver::Puppeteer.new(browser_type: :chromium, headless: false, devtools: true, app: app)
|
11
11
|
end
|
12
12
|
|
13
|
-
Isomorfeus::Puppetmaster.register_driver(:firefox) do |app|
|
14
|
-
Isomorfeus::Puppetmaster::Driver::Puppeteer.new(browser_type: :firefox, headless: true, app: app)
|
15
|
-
end
|
16
|
-
|
17
|
-
Isomorfeus::Puppetmaster.register_driver(:firefox_debug) do |app|
|
18
|
-
Isomorfeus::Puppetmaster::Driver::Puppeteer.new(browser_type: :firefox, headless: false, devtools: true, app: app)
|
19
|
-
end
|
20
|
-
|
21
13
|
Isomorfeus::Puppetmaster.register_driver(:jsdom) do |app|
|
22
14
|
Isomorfeus::Puppetmaster::Driver::Jsdom.new(app: app)
|
23
15
|
end
|
@@ -26,18 +26,16 @@ Isomorfeus::Puppetmaster.register_server :falcon do |app, port, host, **options|
|
|
26
26
|
Rack::Handler::Falcon.run(app, { Host: host, Port: port }.merge(options)).join
|
27
27
|
end
|
28
28
|
|
29
|
-
Isomorfeus::Puppetmaster.register_server :iodine do |app, port,
|
29
|
+
Isomorfeus::Puppetmaster.register_server :iodine do |app, port, host, **options|
|
30
30
|
begin
|
31
|
+
require 'iodine'
|
31
32
|
require 'iodine/version'
|
32
33
|
require 'rack/handler/iodine'
|
33
34
|
rescue LoadError
|
34
35
|
raise LoadError, "Unable to load 'iodine' as server."
|
35
36
|
end
|
36
37
|
|
37
|
-
|
38
|
-
puts "* Version #{Iodine::VERSION}"
|
39
|
-
|
40
|
-
Iodine::Rack.run(app, { Host: host, Port: port }.merge(options)).join
|
38
|
+
Iodine::Rack.run(app, { Host: host, Port: port }.merge(options))
|
41
39
|
end
|
42
40
|
|
43
41
|
Isomorfeus::Puppetmaster.register_server :puma do |app, port, host, **options|
|
@@ -1,3 +1,3 @@
|
|
1
1
|
module Isomorfeus
|
2
|
-
PUPPETMASTER_VERSION = '0.
|
3
|
-
end
|
2
|
+
PUPPETMASTER_VERSION = '0.3.0'
|
3
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: isomorfeus-puppetmaster
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jan Biedermann
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-11-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.2.
|
33
|
+
version: 0.2.11
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.2.
|
40
|
+
version: 0.2.11
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: method_source
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -114,14 +114,14 @@ dependencies:
|
|
114
114
|
requirements:
|
115
115
|
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: 2.
|
117
|
+
version: 2.11.3
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: 2.
|
124
|
+
version: 2.11.3
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: chunky_png
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -170,14 +170,14 @@ dependencies:
|
|
170
170
|
requirements:
|
171
171
|
- - "~>"
|
172
172
|
- !ruby/object:Gem::Version
|
173
|
-
version: 0.7.
|
173
|
+
version: 0.7.36
|
174
174
|
type: :development
|
175
175
|
prerelease: false
|
176
176
|
version_requirements: !ruby/object:Gem::Requirement
|
177
177
|
requirements:
|
178
178
|
- - "~>"
|
179
179
|
- !ruby/object:Gem::Version
|
180
|
-
version: 0.7.
|
180
|
+
version: 0.7.36
|
181
181
|
- !ruby/object:Gem::Dependency
|
182
182
|
name: irb
|
183
183
|
requirement: !ruby/object:Gem::Requirement
|
@@ -254,14 +254,14 @@ dependencies:
|
|
254
254
|
requirements:
|
255
255
|
- - "~>"
|
256
256
|
- !ruby/object:Gem::Version
|
257
|
-
version:
|
257
|
+
version: 4.2.1
|
258
258
|
type: :development
|
259
259
|
prerelease: false
|
260
260
|
version_requirements: !ruby/object:Gem::Requirement
|
261
261
|
requirements:
|
262
262
|
- - "~>"
|
263
263
|
- !ruby/object:Gem::Version
|
264
|
-
version:
|
264
|
+
version: 4.2.1
|
265
265
|
- !ruby/object:Gem::Dependency
|
266
266
|
name: rake
|
267
267
|
requirement: !ruby/object:Gem::Requirement
|
@@ -375,7 +375,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
375
375
|
- !ruby/object:Gem::Version
|
376
376
|
version: '0'
|
377
377
|
requirements: []
|
378
|
-
rubygems_version: 3.0.
|
378
|
+
rubygems_version: 3.0.6
|
379
379
|
signing_key:
|
380
380
|
specification_version: 4
|
381
381
|
summary: Acceptance testing for isomorfeus.
|