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