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.
@@ -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