模組 IRB::IrbLoader

提供一些用於在 irb 會話中載入檔案的指令。

請參閱 ExtendCommandBundle 以取得更多資訊。

公開實例方法

irb_load(fn, priv = nil) 按一下以切換來源

載入指定檔案,類似於 Kernel#load

# File lib/irb/ext/loader.rb, line 20
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) 按一下以切換來源

在目前會話的內容中載入指定檔案並對其進行評估。

請參閱 Irb#suspend_input_method 以取得更多資訊。

# File lib/irb/ext/loader.rb, line 69
def load_file(path, priv = nil)
  irb = irb_context.irb
  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
      FileInputMethod.open(path) do |io|
        irb.suspend_input_method(io) 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
end
source_file(path) 按一下以切換來源

在目前會話中載入指定檔案並顯示來源程式碼行

請參閱 Irb#suspend_input_method 以取得更多資訊。

# File lib/irb/ext/loader.rb, line 44
def source_file(path)
  irb = irb_context.irb
  irb.suspend_name(path, File.basename(path)) do
    FileInputMethod.open(path) do |io|
      irb.suspend_input_method(io) 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