Method: Arrow::Object.deprecate_class_method
- Defined in:
- lib/arrow/object.rb
.deprecate_class_method(oldSym, newSym = oldSym) ⇒ Object
Like Object.deprecate_method, but for class methods.
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'lib/arrow/object.rb', line 68 def self::deprecate_class_method( oldSym, newSym=oldSym ) warningMessage = '' # If the method is being removed, alias it away somewhere and build # an appropriate warning message. Otherwise, just build a warning # message. if oldSym == newSym newSym = ("__deprecated_" + oldSym.to_s + "__").to_sym warningMessage = "%s::%s is deprecated" % [ self.name, oldSym.to_s ] alias_class_method newSym, oldSym else warningMessage = "%s::%s is deprecated; use %s::%s instead" % [ self.name, oldSym.to_s, self.name, newSym.to_s ] end # Build the method that logs a warning and then calls the true # method. class_eval %Q{ def self::#{oldSym.to_s}( *args, &block ) Arrow::Logger.notice "warning: %s: #{warningMessage}" % [ caller(1) ] send( #{newSym.inspect}, *args, &block ) rescue => err # Mangle exceptions to point someplace useful Kernel.raise err, err.message, err.backtrace[2..-1] end } end |