From: transfire@... Date: 2015-03-02T23:57:44+00:00 Subject: [ruby-core:68386] [Ruby trunk - Bug #10924] String#b Issue #10924 has been updated by Thomas Sawyer. Robert A. Heiler wrote: > I think that, the name aside, this would be a wonderful example for different > namespaces and restoring to the old default afterwards. > > That way, you could undefine String#b for the purpose of only your gem alone here > but leave it untouched otherwise. > > Just like your code would be in its own little namespace whereas for everywhere > else outside, String#b works fine as it would be. Refinements scoped at the gem level? I think I argued in favor of that once. I don't so much mind refinements even at the file level, but I think the special notation made them all but useless. I think refinements need to be something that is imposed by the user and the underlying code itself is unchanged. In other words, give me a file that has a core-extension defined in it. If I say: ~~~ require 'core-ext.rb' ~~~ Then the core extension is added globally, but if say: ~~~ refine `core-ext.rb` ~~~ Then it is the same but only apples locally. The `core-ext.rb` file itself is the same in either case. ---------------------------------------- Bug #10924: String#b https://bugs.ruby-lang.org/issues/10924#change-51735 * Author: Thomas Sawyer * Status: Open * Priority: Normal * Assignee: * ruby -v: 2.1.0 * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN ---------------------------------------- Well, I just learned about the String#b [method](http://ruby-doc.org/core-2.1.0/String.html#methodi-b) today. And of course it breaks the [Radix](https://github.com/rubyworks/radix) gem :-( Honestly, back when I create Radix in 2009 I could not have imagined a safer bet than `#b` for an extension if I tried. And yet sure enough, Ruby makes `String#b` an official method for converting to ASCII 8-bit. Is it really such a popular method to get such a short name? I mean `String#ascii` wouldn't have been a better choice? To go along with `#ascii_only`? Okay, so much for my mini-rant. So bottom line, can I ask that this method not be called `#b`? Even putting the conflict with Radix aside, I think it's a pretty bad name for a standard Ruby method. Just read it: "#b". Do you have any idea what that does without looking it up in the documentation? Nope, no way. (P.S. Bug or feature, not sure what to label it. Left it a bug b/c it did [break people's code](https://github.com/rubyworks/radix/issues/10).) -- https://bugs.ruby-lang.org/