From: "trans (Thomas Sawyer)" Date: 2012-12-22T01:27:01+09:00 Subject: [ruby-core:51063] [ruby-trunk - Feature #5643] require/load options and binding option Issue #5643 has been updated by trans (Thomas Sawyer). 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. ---------------------------------------- Feature #5643: require/load options and binding option https://bugs.ruby-lang.org/issues/5643#change-34990 Author: trans (Thomas Sawyer) Status: Assigned Priority: Normal Assignee: matz (Yukihiro Matsumoto) Category: Target version: next minor 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. -- http://bugs.ruby-lang.org/