From: Joel VanderWerf Date: 2008-02-26T07:02:27+09:00 Subject: Re: deprecated Robert Klemme wrote: > > This just occurred to me (for Java fans): > > class Module > def deprecated *meths > meths.each do |me| > aliased = "_deprecate_#{me}" > alias_method aliased, me > class_eval "def #{me}(*a,&b) $stderr.puts 'WARNING: deprecated > method called: #{me}'; #{aliased}(*a,&b) end" > end > end > end Nice (and I'm not a Java fan). I'd make the output indirect, though, in case of GUI etc. Also, you could use this to only warn on the first call of each method for a given class. class Module def deprecated *meths meths.each do |me| aliased = "_deprecate_#{me}" alias_method aliased, me class_eval %{ def #{me}(*a,&b) warn_deprecated('#{me}') #{aliased}(*a,&b) end } end end end class Object def warn_deprecated me warn "WARNING: deprecated method called: #{me}" end end -- vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407