Feature #5643
openrequire/load options and binding option
Description
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
1
end
then
class X
load('example.rb', :binding=>binding)
end
X.new.a #=> 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.
Updated by mame (Yusuke Endoh) over 12 years ago
- Status changed from Open to Assigned
- Assignee set to matz (Yukihiro Matsumoto)
Updated by ko1 (Koichi Sasada) about 12 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) about 12 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) about 10 years ago
- Related to Feature #10320: require into module added