module IRB::IrbLoader

Provides a few commands for loading files within an irb session.

See ExtendCommandBundle for more information.

Public Instance Methods

irb_load(fn, priv = nil) click to toggle source

Loads the given file similarly to Kernel#load

# File lib/irb/ext/loader.rb, line 27
def irb_load(fn, priv = nil)
  path = search_file_from_ruby_path(fn)
  raise LoadError, "No such file to load -- #{fn}" unless path

  load_file(path, priv)
end
load_file(path, priv = nil) click to toggle source

Loads the given file in the current session's context and evaluates it.

See IRB::Irb#suspend_input_method for more information.

# File lib/irb/ext/loader.rb, line 73
def load_file(path, priv = nil)
  irb.suspend_name(path, File.basename(path)) do

    if priv
      ws = WorkSpace.new(Module.new)
    else
      ws = WorkSpace.new
    end
    irb.suspend_workspace(ws) do
      irb.suspend_input_method(FileInputMethod.new(path)) do
        |back_io|
        irb.signal_status(:IN_LOAD) do
          if back_io.kind_of?(FileInputMethod)
            irb.eval_input
          else
            begin
              irb.eval_input
            rescue LoadAbort
              print "load abort!!\n"
            end
          end
        end
      end
    end
  end
end
source_file(path) click to toggle source

Loads a given file in the current session and displays the source lines

See IRB::Irb#suspend_input_method for more information.

# File lib/irb/ext/loader.rb, line 51
def source_file(path)
  irb.suspend_name(path, File.basename(path)) do
    irb.suspend_input_method(FileInputMethod.new(path)) do
      |back_io|
      irb.signal_status(:IN_LOAD) do
        if back_io.kind_of?(FileInputMethod)
          irb.eval_input
        else
          begin
            irb.eval_input
          rescue LoadAbort
            print "load abort!!\n"
          end
        end
      end
    end
  end
end