From: nobu.nokada@... Date: 2003-12-04T14:01:34+09:00 Subject: Re: Using Modules as Decorators Hi, At Thu, 4 Dec 2003 07:17:07 +0900, Nathan Weston wrote: > def decorate(obj, name) > #We have to eval string to avoid scope issues: > #class << obj > # alias_method(:orig_name(name), :name) <-- These variables > # are substituted through string expansion > #end > eval("class << obj\nalias_method(:#{orig_name(name)}, :#{name})\nend") > end def decorate(obj, name) orig = orig_name(name) (class << obj; self; end).class_eval {alias_method(orig, name)} end > #Call the original definition of name on object > def call_orig(obj, name, *args) > obj.send(orig_name(name), *args) > end def call_orig(obj, name, *args, &block) obj.__send__(orig_name(name), *args, &block) end -- Nobu Nakada