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