deprecated

R

Robert Klemme

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

irb(main):010:0> class String
irb(main):011:1> deprecated :to_i
irb(main):012:1> end
=> [:to_i]
irb(main):013:0> "123".to_i
WARNING: deprecated method called: to_i
=> 123
irb(main):014:0>

Kind regards

robert
 
J

Joel VanderWerf

Robert said:
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
 
R

Robert Klemme

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,537
Members
45,020
Latest member
GenesisGai

Latest Threads

Top