Luke Graham
3/7/2005 7:35:00 AM
On Mon, 7 Mar 2005 17:31:24 +1000, Luke Graham <spoooq@gmail.com> wrote:
> On Mon, 7 Mar 2005 16:03:40 +0900, Francis Hwang <sera@fhwang.net> wrote:
> > So maybe some of you language wizards out there can help me with this:
> > Is there a way to define a method that aliases some external method
> > without assigning that method to a global in the first place?
> >
> > The example is the code below: For mockfs/override.rb, I'm undefining
> > File, but want to keep File.join.
> >
> > $join_method = File.method :join
> > Object.send( :remove_const, :File )
> > module File
> > def self.join( *args )
> > $join_method.call *args
> > end
> >
> > def self.method_missing( symbol, *args )
> > MockFS.file.send( symbol, *args )
> > end
> > end
> >
> > This works, but then I'm leaving a global variable just sitting around.
> > Is there a better way to do this?
>
> Im a long way from a wizard, but how about this...
>
> OldFile = File.clone
> Object.send :remove_const, :File
> module File
> OldFile = OldFile.clone
> def self.method_missing(symbol, *args)
> File.send symbol, *args
> end
> end
Missed the final..
Object.send :remove_const, :OldFile
Better name the OldFile in the module something different too :P
--
spooq