1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
module IceCube
module Deprecated
# Define a deprecated alias for a method
# @param [Symbol] name - name of method to define
# @param [Symbol] replacement - name of method to replace (alias)
def deprecated_alias(name, replacement)
# Create a wrapped version
define_method(name) do |*args, &block|
warn "IceCube: #{self.class}##{name} is deprecated (use #{replacement})", caller[0]
send replacement, *args, &block
end
end
# Deprecate a defined method
# @param [Symbol] name - name of deprecated method
# @param [Symbol] replacement - name of the desired replacement
def deprecated(name, replacement)
# Replace old method
old_name = :"#{name}_without_deprecation"
alias_method old_name, name
# And replace it with a wrapped version
define_method(name) do |*args, &block|
warn "IceCube: #{self.class}##{name} is deprecated (use #{replacement})", caller[0]
send old_name, *args, &block
end
end
def self.schedule_options(schedule, options)
if options[:start_date_override]
warn "IceCube: :start_date_override option is deprecated " \
"(use a block: `{|s| s.start_time = override }`)", caller[0]
schedule.start_time = options[:start_date_override]
end
end
end
end
|