From: Rodrigo Rosenfeld Rosas Date: 2012-11-30T20:46:31+09:00 Subject: [ruby-core:50390] Re: [ruby-trunk - Feature #4085] Refinements and nested methods Em 29-11-2012 23:42, Yukihiro Matsumoto escreveu: > | class C > | def foo; p :C; end > | end > | module M1 > | refine String do def foo; p :M1; super; end; end > | end > | module M2 > | include M1 > | refine String do def foo; p :M2; super; end; end > | end > | using M2 > | C.new.foo #=> ? > | > |I think it's better to just calls M2 and C, not M1, to simplify things. > |super chain is too complex here. > > I was thinking of M2->M1->C, but M2->C is simpler and acceptable. I'm worried about this. We shouldn't be defining this behavior in light of what is simple/feasible until 2.0 release. Because if this decision changes later it will be backward incompatible and it is most likely that we won't be able to change this behavior in the future to keep compatibility. It would be better to think well about this now. What is the really desired behavior in the long-run to avoid compatibility issues in the future?