diff --git a/lib/faraday/deprecate.rb b/lib/faraday/deprecate.rb index 1e59b1894..dc2aec5f0 100644 --- a/lib/faraday/deprecate.rb +++ b/lib/faraday/deprecate.rb @@ -7,20 +7,19 @@ module Faraday # usage about deprecation. # @see Faraday::Deprecate module DeprecatedClass - def self.proxy_class(new_klass) - Class.new(new_klass) do + def self.proxy_class(origclass, ver = '1.0') + proxy = Class.new(origclass) do class << self extend Faraday::Deprecate - # Make this more human readable than # - klass_name = superclass.to_s[/^#$/, 1] - deprecate :new, "#{klass_name}.new", '1.0' - deprecate :inherited, klass_name, '1.0' def ===(other) - superclass === other || super + other.is_a?(superclass) || super end end end + proxy.singleton_class.send(:deprecate, :new, "#{origclass}.new", ver) + proxy.singleton_class.send(:deprecate, :inherited, origclass.name, ver) + proxy end end @@ -73,6 +72,7 @@ def skip_during # @param ver [String] the semver the method will be removed. def deprecate(name, repl, ver) class_eval do + gem_ver = Gem::Version.new(ver) old = "_deprecated_#{name}" alias_method old, name define_method name do |*args, &block| @@ -87,7 +87,7 @@ def deprecate(name, repl, ver) msg = [ "NOTE: #{target_message} is deprecated", repl == :none ? ' with no replacement' : "; use #{repl} instead. ", - "It will be removed in or after version #{Gem::Version.new(ver)}", + "It will be removed in or after version #{gem_ver}", "\n#{target}#{name} called from #{Gem.location_of_caller.join(':')}" ] warn "#{msg.join}." unless Faraday::Deprecate.skip