From: shugo@... Date: 2016-06-29T03:25:13+00:00 Subject: [ruby-core:76187] [Ruby trunk Bug#12530][Rejected] Module Refinements 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: