Skip to content

@rolfb /irb_drop.rb forked from apeiros/irb_drop.rb
Created

Embed URL

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
module Kernel
# usage:
# require 'irb_drop'
# ...do some stuff...
# irb_drop(binding) # irb will open here with the current local variables
# ...continue doing stuff...
def irb_drop(context=nil, *argv)
require 'irb'
require 'pp'
require 'yaml'
original_argv = ARGV.dup
ARGV.replace(argv) # IRB is being stupid
unless defined? ::IRB_SETUP
IRB.setup(nil)
Object.const_set(:IRB_SETUP, true)
end
irb = IRB::Irb.new(IRB::WorkSpace.new(context))
IRB.conf[:IRB_RC].call(irb.context) if IRB.conf[:IRB_RC] # loads the irbrc?
IRB.conf[:MAIN_CONTEXT] = irb.context # why would the main context be set here?
trap("SIGINT") do irb.signal_handle end
ARGV.replace(original_argv)
catch(:IRB_EXIT) do irb.eval_input end
end
module_function :irb_drop
end
# cucumber step to go along with it
Then /^drop me into IRB$/ do
irb_drop(self)
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.