[ruby-core:76187] [Ruby trunk Bug#12530][Rejected] Module Refinements
From:
shugo@...
Date:
2016-06-29 03:25:13 UTC
List:
ruby-core #76187
Issue #12530 has been updated by Shugo Maeda.
Status changed from Open to Rejected
Assignee set to Shugo Maeda
This is not a bug, but an expected behavior.
However, changing this behavior is being discussed in #12079.
----------------------------------------
Bug #12530: Module Refinements
https://bugs.ruby-lang.org/issues/12530#change-59397
* Author: Pavlo Vavruk
* Status: Rejected
* Priority: Normal
* Assignee: Shugo Maeda
* ruby -v: ruby 2.3.1p112
* Backport: 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN
----------------------------------------
Hi guys, I noticed strange situation with module refinements.
There is difference with using methods which you refine.
*User.new.users* will return ["a", "b", "c", "d%"]
*User.new.users_not_work* will fail with error **"undefined method `apply_user_name!' for "a":String"**
module Punctuations
refine String do
COMMON_PUNCTUATION = %w(. , ! ?)
def apply_user_name!
chop! if COMMON_PUNCTUATION.include?(last)
end
end
end
class User
using Punctuations
def names
["a", "b.", "c!", "d%"]
end
def users
names.each { |word| word.apply_user_name! }
end
def users_not_work
names.each(&:apply_user_name!)
end
end
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>