Sure it's in there just not in so many words :-) eval ("class String; alias plus + ; end") def on ; 1 ; end def off ; 2; end def conversion (x) if x==1 eval "class String; def +(x); plus x.to_s; end ; end" elsif x==2 eval "class String; def +(x); plus x; end; end" else raise "unknown setting #{x}" end end conversion on puts "x" + 1 conversion off puts "x" +1 This is not that clean really, because playing with this caused a bit of a problem. First I just 're-aliased' the function ,that lead to a recursive loop. So I instinctively wrote eval ("class String; alias plus + ; end") unless String.methods.include? "plus" But no, the aliased function doesn't show up as a method either. So is there any way to tell what functions have been aliased? Ralph ----- Original Message ----- From: "Dave Thomas" <Dave / PragmaticProgrammer.com> To: "ruby-talk ML" <ruby-talk / ruby-lang.org> Sent: Thursday, November 22, 2001 12:27 PM Subject: [ruby-talk:26089] Re: string concat and .to_s > "mark hahn" <mchahn / facelink.com> writes: > > > > I frankly haven't tried running Ruby extensively with > > > autoconversion turned on > > > > Oh! I didn't know there was such a feature. Is this in the pickaxe > > book? > > No - it isn't built in. I mean enabling it by extending the > appropriate classes. > > > Dave >