Feature #7418

Kernel#used_refinements

Added by Charlie Somerville over 1 year ago. Updated 10 months ago.

[ruby-core:49805]
Status:Assigned
Priority:Normal
Assignee:Yukihiro Matsumoto
Category:-
Target version:next minor

Description

I'd like to propose a method that returns an array of all refinements visible from the current scope. I have documented the ordering of the return array as undefined to allow a bit of flexibility in how it is implemented across the various Ruby implementations.

One of the criticisms of refinements is that its use makes code harder to understand - especially when non-lexical refinements are being used. This method slightly improves the situation by making debugging of code using refinements easier.

I've named the method 'used_refinements' for now, but I'm open to changing that to something else.

I've already done the initial implementation which is attached as a patch. Feedback would be most appreciated.

used_refinements.patch Magnifier (3.06 KB) Charlie Somerville, 11/21/2012 08:16 PM

History

#1 Updated by Magnus Holm over 1 year ago

Maybe it should be called Module.refinements (a la Module.nesting).

// Magnus Holm

On Wed, Nov 21, 2012 at 12:16 PM, charliesome (Charlie Somerville)
charlie@charliesomerville.com wrote:

Issue #7418 has been reported by charliesome (Charlie Somerville).


Feature #7418: Kernel#used_refinements
https://bugs.ruby-lang.org/issues/7418

Author: charliesome (Charlie Somerville)
Status: Open
Priority: Normal
Assignee:
Category:
Target version:

I'd like to propose a method that returns an array of all refinements visible from the current scope. I have documented the ordering of the return array as undefined to allow a bit of flexibility in how it is implemented across the various Ruby implementations.

One of the criticisms of refinements is that its use makes code harder to understand - especially when non-lexical refinements are being used. This method slightly improves the situation by making debugging of code using refinements easier.

I've named the method 'used_refinements' for now, but I'm open to changing that to something else.

I've already done the initial implementation which is attached as a patch. Feedback would be most appreciated.

http://bugs.ruby-lang.org/

#2 Updated by Shugo Maeda over 1 year ago

  • Status changed from Open to Assigned
  • Assignee set to Shugo Maeda

judofyr (Magnus Holm) wrote:

Maybe it should be called Module.refinements (a la Module.nesting).

Module.refinements conflicts with Module#refinements, which returns refinements defined in the receiver.

#3 Updated by Jack Chen over 1 year ago

+1 since I gave Charlie the idea :)

#4 Updated by Yusuke Endoh over 1 year ago

  • Target version set to next minor

Shugo, is this feature mandatory for the 2.0.0 refinements?
I'm setting to next minor tentatively.

Yusuke Endoh mame@tsg.ne.jp

#5 Updated by Shugo Maeda 10 months ago

  • Assignee changed from Shugo Maeda to Yukihiro Matsumoto

I'm against adding a new reflection API for refinements into Ruby 2.1.
What do you think of it, Matz?

Also available in: Atom PDF