From: Robert Klemme Date: 2008-02-26T16:44:55+09:00 Subject: Re: deprecated On 25.02.2008 23:02, Joel VanderWerf wrote: > 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 Good idea! This could even be combined with standard logging libs. Kind regards robert