Forum: Ruby-core [ruby-trunk - Feature #5643][Open] require/load options and binding option

Posted by Thomas Sawyer (7rans)
on 2011-11-16 23:41
(Received via mailing list)
Issue #5643 has been reported by Thomas Sawyer.

----------------------------------------
Feature #5643: require/load options and binding option
http://redmine.ruby-lang.org/issues/5643

Author: Thomas Sawyer
Status: Open
Priority: Normal
Assignee:
Category:
Target version: 2.0.0


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.
Posted by mame (Yusuke Endoh) (Guest)
on 2012-03-27 17:27
(Received via mailing list)
Issue #5643 has been updated by mame (Yusuke Endoh).

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


----------------------------------------
Feature #5643: require/load options and binding option
https://bugs.ruby-lang.org/issues/5643#change-25263

Author: trans (Thomas Sawyer)
Status: Assigned
Priority: Normal
Assignee: matz (Yukihiro Matsumoto)
Category:
Target version: 2.0.0


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.
Posted by ko1 (Koichi Sasada) (Guest)
on 2012-10-26 23:28
(Received via mailing list)
Issue #5643 has been updated by ko1 (Koichi Sasada).

Target version changed from 2.0.0 to next minor

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

----------------------------------------
Feature #5643: require/load options and binding option
https://bugs.ruby-lang.org/issues/5643#change-31670

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.
Posted by Thomas Sawyer (7rans)
on 2012-12-21 17:27
(Received via mailing list)
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.
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.