jarib-celerity 0.0.6.15 → 0.0.6.16
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/celerity.rb +2 -1
- data/lib/celerity/browser.rb +23 -27
- data/lib/celerity/version.rb +1 -1
- data/lib/celerity/viewer_connection.rb +33 -0
- metadata +2 -1
data/lib/celerity.rb
CHANGED
@@ -8,7 +8,7 @@ require "uri"
|
|
8
8
|
require "pp"
|
9
9
|
require "timeout"
|
10
10
|
require "time"
|
11
|
-
require "
|
11
|
+
require "socket"
|
12
12
|
require "fileutils"
|
13
13
|
require "thread"
|
14
14
|
|
@@ -67,6 +67,7 @@ require "celerity/util"
|
|
67
67
|
require "celerity/default_viewer"
|
68
68
|
require "celerity/listener"
|
69
69
|
require "celerity/ignoring_web_connection"
|
70
|
+
require "celerity/viewer_connection"
|
70
71
|
require "celerity/browser"
|
71
72
|
require "celerity/watir_compatibility"
|
72
73
|
|
data/lib/celerity/browser.rb
CHANGED
@@ -68,19 +68,18 @@ module Celerity
|
|
68
68
|
@charset = opts.delete(:charset) || "UTF-8"
|
69
69
|
self.log_level = opts.delete(:log_level) || :warning
|
70
70
|
|
71
|
-
@page
|
72
|
-
@
|
73
|
-
@
|
74
|
-
@browser = self # for Container#browser
|
71
|
+
@page = nil
|
72
|
+
@error_checkers = []
|
73
|
+
@browser = self # for Container#browser
|
75
74
|
|
76
|
-
setup_webclient
|
75
|
+
setup_webclient opts
|
76
|
+
setup_viewer opts.delete(:viewer)
|
77
77
|
|
78
|
-
find_viewer unless opts.delete(:viewer) == false
|
79
78
|
raise ArgumentError, "unknown option #{opts.inspect}" unless opts.empty?
|
80
79
|
end
|
81
80
|
|
82
81
|
def inspect
|
83
|
-
short_inspect :exclude => %w[@webclient @browser @object @options]
|
82
|
+
short_inspect :exclude => %w[@webclient @browser @object @options @listener @event_listener]
|
84
83
|
end
|
85
84
|
|
86
85
|
#
|
@@ -815,6 +814,22 @@ module Celerity
|
|
815
814
|
enable_event_listener
|
816
815
|
end
|
817
816
|
|
817
|
+
def setup_viewer(option)
|
818
|
+
@viewer = DefaultViewer
|
819
|
+
return if option == false
|
820
|
+
|
821
|
+
begin
|
822
|
+
host_string = option.kind_of?(String) ? option : "127.0.0.1:6429"
|
823
|
+
host, port = host_string.split(":")
|
824
|
+
|
825
|
+
if viewer = ViewerConnection.create(host, port.to_i)
|
826
|
+
@viewer = viewer
|
827
|
+
end
|
828
|
+
rescue Errno::ECONNREFUSED => e
|
829
|
+
raise e if option.kind_of?(String)
|
830
|
+
end
|
831
|
+
end
|
832
|
+
|
818
833
|
#
|
819
834
|
# This *should* be unneccessary, but sometimes the page we get from the
|
820
835
|
# window is different (ie. a different object) from our current @page
|
@@ -838,26 +853,7 @@ module Celerity
|
|
838
853
|
|
839
854
|
def render
|
840
855
|
@viewer.render_html(self.send(@render_type), url)
|
841
|
-
rescue
|
842
|
-
@viewer = DefaultViewer
|
843
|
-
end
|
844
|
-
|
845
|
-
#
|
846
|
-
# Check if we have a viewer available on druby://127.0.0.1:6429
|
847
|
-
# @api private
|
848
|
-
#
|
849
|
-
|
850
|
-
def find_viewer
|
851
|
-
# needed to avoid DRb raising and rescuing lots exceptions
|
852
|
-
DRb.start_service unless DRb.primary_server
|
853
|
-
|
854
|
-
viewer = DRbObject.new_with_uri("druby://127.0.0.1:6429")
|
855
|
-
if viewer.respond_to?(:render_html)
|
856
|
-
@viewer = viewer
|
857
|
-
else
|
858
|
-
@viewer = DefaultViewer
|
859
|
-
end
|
860
|
-
rescue DRb::DRbConnError, Errno::ECONNREFUSED
|
856
|
+
rescue Errno::ECONNREFUSED, Errno::ECONNRESET, Errno::EPIPE
|
861
857
|
@viewer = DefaultViewer
|
862
858
|
end
|
863
859
|
|
data/lib/celerity/version.rb
CHANGED
@@ -0,0 +1,33 @@
|
|
1
|
+
module Celerity
|
2
|
+
class ViewerConnection
|
3
|
+
|
4
|
+
def self.create(host, port)
|
5
|
+
socket = TCPSocket.new(host, port)
|
6
|
+
require "json"
|
7
|
+
new(socket)
|
8
|
+
end
|
9
|
+
|
10
|
+
def initialize(socket)
|
11
|
+
@socket = socket
|
12
|
+
end
|
13
|
+
|
14
|
+
def render_html(html, url)
|
15
|
+
send_data({'method' => 'page_changed', 'html' => html, 'url' => url}.to_json)
|
16
|
+
end
|
17
|
+
|
18
|
+
def save(path = nil)
|
19
|
+
send_data({'method' => 'save', 'path' => path}.to_json)
|
20
|
+
end
|
21
|
+
|
22
|
+
def close
|
23
|
+
@socket.close
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def send_data(data)
|
29
|
+
@socket.write ["Content-Length: #{data.size}", data].join("\n\n")
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jarib-celerity
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.6.
|
4
|
+
version: 0.0.6.16
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jari Bakken
|
@@ -82,6 +82,7 @@ files:
|
|
82
82
|
- lib/celerity/short_inspect.rb
|
83
83
|
- lib/celerity/util.rb
|
84
84
|
- lib/celerity/version.rb
|
85
|
+
- lib/celerity/viewer_connection.rb
|
85
86
|
- lib/celerity/watir_compatibility.rb
|
86
87
|
- lib/celerity/xpath_support.rb
|
87
88
|
- lib/celerity.rb
|