class Byebug::IRBCommand
Implements byebug’s “irb” command.
def description
def description %{ irb[ -d]\tstarts an Interactive Ruby (IRB) session. If -d is added you can get access to byebug's state via the global variable $byebug_state. IRB is extended with methods "cont", "n" and "step" which run the corresponding byebug commands. In contrast to the real byebug commands these commands don't allow arguments. } end
def execute
def execute unless @state.interface.kind_of?(LocalInterface) print "Command is available only in local mode.\n" throw :debug_error end add_debugging = @match.is_a?(MatchData) && '-d' == @match[1] $byebug_state = @state if add_debugging cont = IRB.start_session(get_binding) case cont when :cont @state.proceed when :step force = Command.settings[:force_stepping] @state.context.step_into 1, force @state.proceed when :next force = Command.settings[:force_stepping] @state.context.step_over 1, @state.frame_pos, force @state.proceed else file = @state.context.frame_file(0) line = @state.context.frame_line(0) CommandProcessor.print_location_and_text(file, line) @state.previous_line = nil end $byebug_state = nil if add_debugging end
def names
def names %w(irb) end
def regexp
def regexp /^\s* irb (?:\s+(-d))? \s*$/x end