Feature #5643


require/load options and binding option

Added by trans (Thomas Sawyer) over 10 years ago. Updated over 4 years ago.

Target version:


Current Kernel#load is defined as:

load(filename, wrap=false)

I purpose that it be modified to work as option argument, e.g.

load(filename, :wrap=>true)

Right off the bat this has better name connascence.

Then support an additional option :binding, such that, given:

$ cat lib/example.rb
def a


class X
  load('example.rb', :binding=>binding)
end  #=> 1

The binding option should also work with #require (which would also support option parameter) differing from #load in the it would only allow the feature to be loaded once per-binding's self regardless of being required again.

This ability would greatly benefit systems that need "plugin" capability. Presently, a great deal of coding has to go into simulating this functionality to create plugin systems, which are often imperfect nor robust.

Related issues 1 (1 open0 closed)

Related to Ruby master - Feature #10320: require into moduleOpenActions

Updated by mame (Yusuke Endoh) about 10 years ago

  • Status changed from Open to Assigned
  • Assignee set to matz (Yukihiro Matsumoto)

Updated by ko1 (Koichi Sasada) over 9 years ago

  • Target version changed from 2.0.0 to 2.6

I changed target to next minor because no discussion on it.

Updated by trans (Thomas Sawyer) over 9 years ago

I think someone else recently suggested that the wrap argument be able to be a module which the code is then evaluated under, instead of toplevel. Considering that, maybe :wrap option should be used for all cases and it can just handle any of boolean, module or binding accordingly.

Updated by nobu (Nobuyoshi Nakada) over 7 years ago

Actions #5

Updated by naruse (Yui NARUSE) over 4 years ago

  • Target version deleted (2.6)

Also available in: Atom PDF