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.
@@ -8,7 +8,7 @@ require "uri"
8
8
  require "pp"
9
9
  require "timeout"
10
10
  require "time"
11
- require "drb"
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
 
@@ -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 = nil
72
- @viewer = DefaultViewer
73
- @error_checkers = []
74
- @browser = self # for Container#browser
71
+ @page = nil
72
+ @error_checkers = []
73
+ @browser = self # for Container#browser
75
74
 
76
- setup_webclient(opts)
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 DRb::DRbConnError, Errno::ECONNREFUSED => e
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
 
@@ -3,7 +3,7 @@ module Celerity #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 0
5
5
  TINY = 6
6
- PATCH = 15 # Set to nil for official release
6
+ PATCH = 16 # Set to nil for official release
7
7
 
8
8
  STRING = [MAJOR, MINOR, TINY, PATCH].compact.join('.')
9
9
  end
@@ -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.15
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