[ruby-core:76180] [Ruby trunk Bug#12530] Module Refinements

From: pavlo.vavruk@...
Date: 2016-06-28 15:03:55 UTC
List: ruby-core #76180
Issue #12530 has been reported by Pavlo Vavruk.

----------------------------------------
Bug #12530: Module Refinements
https://bugs.ruby-lang.org/issues/12530

* Author: Pavlo Vavruk
* Status: Open
* Priority: Normal
* Assignee: 
* ruby -v: 2.3.1
* 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>

In This Thread

Prev Next