From: Yukihiro Matsumoto Date: 2012-12-07T03:00:21+09:00 Subject: [ruby-core:50643] Re: [ruby-trunk - Feature #4085] Refinements and nested methods In message "Re: [ruby-core:50641] [ruby-trunk - Feature #4085] Refinements and nested methods" on Fri, 7 Dec 2012 01:57:55 +0900, "rosenfeld (Rodrigo Rosenfeld Rosas)" writes: |This is what I'd expect from the code above to find it consistent: | |b.foo # p :Bar; p :R; p :Foo - this is what I'd expect something different than you, or maybe I misinterpreted you notation above? |b.bar # p :R - I think this is the same you expect reading your example above, just wanted to confirm The point is we do not have local rebinding, that means refined method is only available in lexical scope. In the example above, super in Bar#foo is not in the refinement scope. That's the reason refined method never called. This is an artificial example, but in real use-case refinement should be defined for subclasses as well, when a method is redefined in the subclasses. That was original motivation for (abandoned) around method-like refinement, but I decided it should be covered by convention. matz.