> I can call irb from the script, but then it does not remember that
> in the script, I had defined array[4544]="my nice parameter value"
> anymore, same thing if I start irb directly and use require "myscript.rb".
By default IRB.start starts the IRB instance in its new custom context
that will not have local variables from your context defined.
In ruby-breakpoint I'm using this overloaded version to specify a context:
> module IRB # :nodoc:
> class << self; remove_method :start; end
> def self.start(ap_path = nil, main_context = nil, workspace = nil)
> $0 = File::basename(ap_path, ".rb") if ap_path
>
> # suppress some warnings about redefined constants
> old_verbose, $VERBOSE = $VERBOSE, nil
> IRB.setup(ap_path)
> $VERBOSE = old_verbose
>
> if @CONF[:SCRIPT] then
> irb = Irb.new(main_context, @CONF[:SCRIPT])
> else
> irb = Irb.new(main_context)
> end
>
> if workspace then
> irb.context.workspace = workspace
> end
>
> @CONF[:IRB_RC].call(irb.context) if @CONF[:IRB_RC]
> @CONF[:MAIN_CONTEXT] = irb.context
>
> old_sigint = trap("SIGINT") do
> begin
> irb.signal_handle
> rescue RubyLex::TerminateLineInput
> # ignored
> end
> end
>
> catch(:IRB_EXIT) do
> irb.eval_input
> end
> ensure
> trap("SIGINT", old_sigint)
> end
> end
It's used as IRB.start(nil, binding).