Skip to content

Instantly share code, notes, and snippets.

@rolfb
Forked from apeiros/irb_drop.rb
Created June 8, 2010 13:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rolfb/430046 to your computer and use it in GitHub Desktop.
Save rolfb/430046 to your computer and use it in GitHub Desktop.
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