Actions
Bug #12530
closedModule Refinements
Description
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
Updated by noxxxname (Pavlo Vavruk) over 8 years ago
- ruby -v changed from 2.3.1 to ruby 2.3.1p112
Updated by shugo (Shugo Maeda) over 8 years ago
- Status changed from Open to Rejected
- Assignee set to shugo (Shugo Maeda)
This is not a bug, but an expected behavior.
However, changing this behavior is being discussed in #12079.
Updated by shugo (Shugo Maeda) over 8 years ago
- Is duplicate of Feature #12079: Loosening the condition for refinement added
Actions
Like0
Like0Like0Like0