jarib-celerity 0.0.6.15 → 0.0.6.16
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.
- 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
|