Project

General

Profile

Feature #7418

Kernel#used_refinements

Added by Charlie Somerville over 3 years ago. Updated almost 3 years ago.

Status:
Assigned
Priority:
Normal
[ruby-core:49805]

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 [ruby-core:49812] Updated by Magnus Holm over 3 years 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 [ruby-core:49850] Updated by Shugo Maeda over 3 years 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 3 years ago

+1 since I gave Charlie the idea :)

#4 [ruby-core:49984] Updated by Yusuke Endoh over 3 years 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 [ruby-core:55759] Updated by Shugo Maeda almost 3 years 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