class SporkDebugger::PreloadState

Public Instance Methods

finish() click to toggle source
# File lib/spork/ext/ruby-debug.rb, line 53
def finish
  @tcp_service.close; @tcp_service = nil;
end
transition_to_each_run_state() click to toggle source
# File lib/spork/ext/ruby-debug.rb, line 57
def transition_to_each_run_state
  finish
  SporkDebugger::EachRunState.new(@port)
end

Protected Instance Methods

connect_rdebug_client(port = Debugger::PORT) click to toggle source
# File lib/spork/ext/ruby-debug.rb, line 96
def connect_rdebug_client(port = Debugger::PORT)
  puts "\n\n - Debug Session Started - \n\n\n"
  begin
    Debugger.start_client(SporkDebugger::HOST, port)
  rescue Errno::EPIPE, Errno::ECONNRESET, Errno::ECONNREFUSED
  end
  puts "\n\n - Debug Session Terminated - \n\n\n"
end
debugger(steps = 1) click to toggle source
# File lib/spork/ext/ruby-debug.rb, line 66
def debugger(steps = 1)
  SporkDebugger.instance.prepare_debugger
  debugger_without_spork_hook
end
install_hook() click to toggle source
# File lib/spork/ext/ruby-debug.rb, line 63
def install_hook
  Kernel.class_eval do
    alias :debugger_without_spork_hook :debugger
    def debugger(steps = 1)
      SporkDebugger.instance.prepare_debugger
      debugger_without_spork_hook
    end
  end
end
listen_for_connection_signals() click to toggle source
# File lib/spork/ext/ruby-debug.rb, line 73
def listen_for_connection_signals
  @port = SporkDebugger::DEFAULT_PORT
  begin
    @tcp_service = TCPServer.new(SporkDebugger::HOST, @port)
  rescue Errno::EADDRINUSE
    @port += 1
    retry
  end
  Thread.new { main_loop }
end
main_loop() click to toggle source
# File lib/spork/ext/ruby-debug.rb, line 84
def main_loop
  while @tcp_service do
    socket = @tcp_service.accept
    port = Marshal.load(socket)
    Marshal.dump(true, socket)
    connect_rdebug_client(port)
    socket.close
  end
rescue => e
  puts "error: #{e.class} - #{e}"
end

Public Class Methods

new() click to toggle source
# File lib/spork/ext/ruby-debug.rb, line 48
def initialize
  Spork.each_run { install_hook }
  listen_for_connection_signals
end