From: Ross Bamford Date: 2006-12-29T21:15:05+09:00 Subject: Re: Bug or Feature? (proxying methods) On Fri, 29 Dec 2006 11:12:54 -0000, yrashk@gmail.com wrote: > I have the following code: > > class ReturnSelfAfter > > def initialize(context) > @context = context > end > > def method_missing(sym,*args,&block) > @context.send sym, *args, &block > @context > end > > end > > class Object > def return_self_after > ReturnSelfAfter.new(self) > end > end > > While it works fine proxying most of methods (not inclusive standard > ones, of course), it seems to fail on setters: > > class C ; attr_accessor :abc ; end > >>> C.new.return_self_after.abc = 1 > => 1 > > While #abc returns C class instance, of course: > >>> C.new.return_self_after.abc > => # > > So, is it a bug or a feature? Or am I just missing something? > It's a feature - assignment in ruby always returns the assigned value, no matter what you try to return from the method. I guess it's a question of consistency. -- Ross Bamford - rosco@roscopeco.remove.co.uk