pry-remote 0.1.7 → 0.1.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/pry-remote.rb +51 -15
  3. metadata +11 -17
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 169f55f956d914a4ca611f12b2b41c221166c1da
4
+ data.tar.gz: a0dfdb736a3c3772e1d9542fb96f3a2fd57446ef
5
+ SHA512:
6
+ metadata.gz: b58db7ae0a89f8b6c4b6ce1e2e341d18bf679d3b703f6948a7e200b3efa6d5bd71fc523b47a16f3669e3665d355b8378eb1267339740ce499bcf0d4a2bf3e7cd
7
+ data.tar.gz: f970dbe41d24079a2910cb03bba7b61d898065bf625f8cd446dc1dc424d701596ffbb0bb6d0e1e04dbe2bfc8a7c8f9bf86f3268ca9fc051ffd8462743a93f904
@@ -54,7 +54,9 @@ module PryRemote
54
54
  end
55
55
 
56
56
  def readline(prompt)
57
- if @obj.method(:readline).arity == 1
57
+ if Readline == @obj
58
+ @obj.readline(prompt, true)
59
+ elsif @obj.method(:readline).arity == 1
58
60
  @obj.readline(prompt)
59
61
  else
60
62
  $stdout.print prompt
@@ -70,6 +72,10 @@ module PryRemote
70
72
  @obj.print(*objs)
71
73
  end
72
74
 
75
+ def printf(*args)
76
+ @obj.printf(*args)
77
+ end
78
+
73
79
  def write(data)
74
80
  @obj.write data
75
81
  end
@@ -128,18 +134,21 @@ module PryRemote
128
134
  end
129
135
 
130
136
  class Server
131
- def self.run(object, host = DefaultHost, port = DefaultPort)
132
- new(object, host, port).run
137
+ def self.run(object, host = DefaultHost, port = DefaultPort, options = {})
138
+ new(object, host, port, options).run
133
139
  end
134
140
 
135
- def initialize(object, host = DefaultHost, port = DefaultPort)
136
- @uri = "druby://#{host}:#{port}"
137
- @object = object
141
+ def initialize(object, host = DefaultHost, port = DefaultPort, options = {})
142
+ @host = host
143
+ @port = port
144
+
145
+ @object = object
146
+ @options = options
138
147
 
139
148
  @client = PryRemote::Client.new
140
- DRb.start_service @uri, @client
149
+ DRb.start_service uri, @client
141
150
 
142
- puts "[pry-remote] Waiting for client on #@uri"
151
+ puts "[pry-remote] Waiting for client on #{uri}"
143
152
  @client.wait
144
153
 
145
154
  puts "[pry-remote] Client received, starting remote session"
@@ -196,7 +205,8 @@ module PryRemote
196
205
  # Actually runs pry-remote
197
206
  def run
198
207
  setup
199
- Pry.start(@object, :input => client.input_proxy, :output => client.output)
208
+
209
+ Pry.start(@object, @options.merge(:input => client.input_proxy, :output => client.output))
200
210
  ensure
201
211
  teardown
202
212
  end
@@ -206,6 +216,17 @@ module PryRemote
206
216
 
207
217
  # @return [PryServer::Client] Client connecting to the pry-remote server
208
218
  attr_reader :client
219
+
220
+ # @return [String] Host of the server
221
+ attr_reader :host
222
+
223
+ # @return [Integer] Port of the server
224
+ attr_reader :port
225
+
226
+ # @return [String] URI for DRb
227
+ def uri
228
+ "druby://#{host}:#{port}"
229
+ end
209
230
  end
210
231
 
211
232
  # Parses arguments and allows to start the client.
@@ -218,6 +239,8 @@ module PryRemote
218
239
  :default => DefaultHost
219
240
  on :p, :port=, "Port of the server (#{DefaultPort})", :argument => :optional,
220
241
  :as => Integer, :default => DefaultPort
242
+ on :w, :wait, "Wait for the pry server to come up",
243
+ :default => false
221
244
  on :c, :capture, "Captures $stdout and $stderr from the server (true)",
222
245
  :default => true
223
246
  on :f, "Disables loading of .pryrc and its plugins, requires, and command history "
@@ -228,6 +251,7 @@ module PryRemote
228
251
  @host = params[:server]
229
252
  @port = params[:port]
230
253
 
254
+ @wait = params[:wait]
231
255
  @capture = params[:capture]
232
256
 
233
257
  Pry.initial_session_setup unless params[:f]
@@ -244,7 +268,9 @@ module PryRemote
244
268
  "druby://#{host}:#{port}"
245
269
  end
246
270
 
271
+ attr_reader :wait
247
272
  attr_reader :capture
273
+ alias wait? wait
248
274
  alias capture? capture
249
275
 
250
276
  # Connects to the server
@@ -252,15 +278,24 @@ module PryRemote
252
278
  # @param [IO] input Object holding input for pry-remote
253
279
  # @param [IO] output Object pry-debug will send its output to
254
280
  def run(input = Pry.config.input, output = Pry.config.output)
255
- DRb.start_service
281
+ local_ip = UDPSocket.open {|s| s.connect(@host, 1); s.addr.last}
282
+ DRb.start_service "druby://#{local_ip}:0"
256
283
  client = DRbObject.new(nil, uri)
257
284
 
258
285
  input = IOUndumpedProxy.new(input)
259
286
  output = IOUndumpedProxy.new(output)
260
287
 
261
- client.input = input
262
-
263
- client.output = output
288
+ begin
289
+ client.input = input
290
+ client.output = output
291
+ rescue DRb::DRbConnError => ex
292
+ if wait?
293
+ sleep 1
294
+ retry
295
+ else
296
+ raise ex
297
+ end
298
+ end
264
299
 
265
300
  if capture?
266
301
  client.stdout = $stdout
@@ -280,8 +315,9 @@ class Object
280
315
  #
281
316
  # @param [String] host Host of the server
282
317
  # @param [Integer] port Port of the server
283
- def remote_pry(host = PryRemote::DefaultHost, port = PryRemote::DefaultPort)
284
- PryRemote::Server.new(self, host, port).run
318
+ # @param [Hash] options Options to be passed to Pry.start
319
+ def remote_pry(host = PryRemote::DefaultHost, port = PryRemote::DefaultPort, options = {})
320
+ PryRemote::Server.new(self, host, port, options).run
285
321
  end
286
322
 
287
323
  # a handy alias as many people may think the method is named after the gem
metadata CHANGED
@@ -1,46 +1,41 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pry-remote
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
5
- prerelease:
4
+ version: 0.1.8
6
5
  platform: ruby
7
6
  authors:
8
7
  - Mon ouie
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-03-03 00:00:00.000000000 Z
11
+ date: 2014-01-29 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: slop
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ~>
17
+ - - "~>"
20
18
  - !ruby/object:Gem::Version
21
19
  version: '3.0'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ~>
24
+ - - "~>"
28
25
  - !ruby/object:Gem::Version
29
26
  version: '3.0'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: pry
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ~>
31
+ - - "~>"
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0.9'
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ~>
38
+ - - "~>"
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0.9'
46
41
  description: Connect to Pry remotely using DRb
@@ -56,27 +51,26 @@ files:
56
51
  - bin/pry-remote
57
52
  homepage: http://github.com/Mon-Ouie/pry-remote
58
53
  licenses: []
54
+ metadata: {}
59
55
  post_install_message:
60
56
  rdoc_options: []
61
57
  require_paths:
62
58
  - lib
63
59
  required_ruby_version: !ruby/object:Gem::Requirement
64
- none: false
65
60
  requirements:
66
- - - ! '>='
61
+ - - ">="
67
62
  - !ruby/object:Gem::Version
68
63
  version: '0'
69
64
  required_rubygems_version: !ruby/object:Gem::Requirement
70
- none: false
71
65
  requirements:
72
- - - ! '>='
66
+ - - ">="
73
67
  - !ruby/object:Gem::Version
74
68
  version: '0'
75
69
  requirements: []
76
70
  rubyforge_project:
77
- rubygems_version: 1.8.23
71
+ rubygems_version: 2.0.14
78
72
  signing_key:
79
- specification_version: 3
73
+ specification_version: 4
80
74
  summary: Connect to Pry remotely
81
75
  test_files: []
82
76
  has_rdoc: