Class: PryRemote::CLI

Inherits:
Object show all
Defined in:
lib/pry-remote.rb

Overview

Parses arguments and allows to start the client.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(args = ARGV) ⇒ CLI

Returns a new instance of CLI.



233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
# File 'lib/pry-remote.rb', line 233

def initialize(args = ARGV)
  params = Pry::Slop.parse args, :help => true do
    banner "#$PROGRAM_NAME [OPTIONS]"

    on :s, :server=, "Host of the server (#{DefaultHost})", :argument => :optional,
       :default => DefaultHost
    on :p, :port=, "Port of the server (#{DefaultPort})", :argument => :optional,
       :as => Integer, :default => DefaultPort
    on :w, :wait, "Wait for the pry server to come up",
       :default => false
    on :c, :capture, "Captures $stdout and $stderr from the server (true)",
       :default => true
    on :f, "Disables loading of .pryrc and its plugins, requires, and command history "
  end

  exit if params.help?

  @host = params[:server]
  @port = params[:port]

  @wait = params[:wait]
  @capture = params[:capture]

  Pry.initial_session_setup unless params[:f]
end

Instance Attribute Details

#captureObject (readonly) Also known as: capture?

Returns the value of attribute capture.



271
272
273
# File 'lib/pry-remote.rb', line 271

def capture
  @capture
end

#hostString (readonly)

Returns Host of the server.

Returns:

  • (String)

    Host of the server



260
261
262
# File 'lib/pry-remote.rb', line 260

def host
  @host
end

#portInteger (readonly)

Returns Port of the server.

Returns:

  • (Integer)

    Port of the server



263
264
265
# File 'lib/pry-remote.rb', line 263

def port
  @port
end

#waitObject (readonly) Also known as: wait?

Returns the value of attribute wait.



270
271
272
# File 'lib/pry-remote.rb', line 270

def wait
  @wait
end

Instance Method Details

#run(input = Pry.config.input, output = Pry.config.output) ⇒ Object

Connects to the server

Parameters:

  • input (IO) (defaults to: Pry.config.input)

    Object holding input for pry-remote

  • output (IO) (defaults to: Pry.config.output)

    Object pry-debug will send its output to



279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
# File 'lib/pry-remote.rb', line 279

def run(input = Pry.config.input, output = Pry.config.output)
  local_ip = UDPSocket.open {|s| s.connect(@host, 1); s.addr.last}
  DRb.start_service "druby://#{local_ip}:0"
  client = DRbObject.new(nil, uri)

  input  = IOUndumpedProxy.new(input)
  output = IOUndumpedProxy.new(output)

  begin
    client.input  = input
    client.output = output
  rescue DRb::DRbConnError => ex
    if wait?
      sleep 1
      retry
    else
      raise ex
    end
  end

  if capture?
    client.stdout = $stdout
    client.stderr = $stderr
  end

  client.thread = Thread.current

  sleep
  DRb.stop_service
end

#uriString

Returns URI for DRb.

Returns:

  • (String)

    URI for DRb



266
267
268
# File 'lib/pry-remote.rb', line 266

def uri
  "druby://#{host}:#{port}"
end