From: Robert Dober Date: 2010-04-30T19:10:12+09:00 Subject: Re: Hijacking `super' > Any ideas are very much appreciated. > This could be a start class Object def _super *args, &blk name = caller[2].split.last.delete("'`") mthd = self.class.ancestors[1..-1].inject( nil ){ |mthd, mod| mthd = mthd || ( mod.instance_method name rescue nil ) } raise NoMethodError, "wassit?" unless mthd mthd.bind( self ).call( *args, &blk ) end end class A def a; p 42 end end class B < A def a &blk instance_eval( &blk ) end def b &blk instance_eval( &blk ) end end B::new.a{ _super } B::new.b{ _super } very quick, very dirty and not very much tested (well just the two calls below) but that might get you somewhere HTH R. > -- > Michael Jackson > http://mjijackson.com > @mjijackson > > -- The best way to predict the future is to invent it. -- Alan Kay