Class: SporkDebugger::EachRunState

Inherits:
Object
  • Object
show all
Includes:
NetworkHelpers
Defined in:
lib/spork/ext/ruby-debug.rb

Instance Method Summary collapse

Methods included from NetworkHelpers

#find_port

Constructor Details

#initialize(connection_request_port) ⇒ EachRunState

Returns a new instance of EachRunState.



106
107
108
# File 'lib/spork/ext/ruby-debug.rb', line 106

def initialize(connection_request_port)
  @connection_request_port = connection_request_port
end

Instance Method Details

#prepare_debuggerObject



110
111
112
113
114
115
116
117
# File 'lib/spork/ext/ruby-debug.rb', line 110

def prepare_debugger
  return if @debugger_prepared
  @debugger_prepared = true
  port, cport = start_rdebug_server
  signal_spork_server_to_connect_to_rdebug_server(port)
  wait_for_connection
  puts "\n\n - breakpoint - see your spork server for the debug terminal - \n\n"
end

#signal_spork_server_to_connect_to_rdebug_server(rdebug_server_port) ⇒ Object



119
120
121
122
123
124
# File 'lib/spork/ext/ruby-debug.rb', line 119

def signal_spork_server_to_connect_to_rdebug_server(rdebug_server_port)
  socket = TCPSocket.new(SporkDebugger::HOST, @connection_request_port)
  Marshal.dump(rdebug_server_port, socket)
  response = Marshal.load(socket)
  socket.close
end

#start_rdebug_serverObject



126
127
128
129
130
131
132
133
134
135
# File 'lib/spork/ext/ruby-debug.rb', line 126

def start_rdebug_server
  Debugger.stop if Debugger.started?
  port = find_port(Debugger::PORT)
  cport = find_port(port + 1)
  Debugger.start_remote(SporkDebugger::HOST, [port, cport]) do
    Debugger.run_init_script(StringIO.new)
  end
  Debugger.start
  [port, cport]
end