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


-- 
spooq