summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Keiser <john@johnkeiser.com>2015-06-03 12:03:26 -0700
committerJohn Keiser <john@johnkeiser.com>2015-06-03 12:04:12 -0700
commit88857ae52f4bfb36d2aa3ca852cfbddd4fdff63b (patch)
tree098ef9c4e383288fb6c8e523375b1440198391a5
parent7292f123eee89301ac732edce1ccca2bdfdf2747 (diff)
downloadchef-88857ae52f4bfb36d2aa3ca852cfbddd4fdff63b.tar.gz
Move deprecated LWRP class override to the deprecation method registrar
-rw-r--r--lib/chef/resource.rb15
-rw-r--r--lib/chef/resource/lwrp_base.rb7
2 files changed, 16 insertions, 6 deletions
diff --git a/lib/chef/resource.rb b/lib/chef/resource.rb
index 003683d66b..ab955f5454 100644
--- a/lib/chef/resource.rb
+++ b/lib/chef/resource.rb
@@ -1280,6 +1280,19 @@ class Chef
Chef::Log.warn "#{class_name} already exists! Deprecation class overwrites #{resource_class}"
Chef::Resource.send(:remove_const, class_name)
end
+
+ # In order to generate deprecation warnings when you use Chef::Resource::MyLwrp,
+ # we make a special subclass (identical in nearly all respects) of the
+ # actual LWRP. When you say any of these, a deprecation warning will be
+ # generated:
+ #
+ # - Chef::Resource::MyLwrp.new(...)
+ # - resource.is_a?(Chef::Resource::MyLwrp)
+ # - resource.kind_of?(Chef::Resource::MyLwrp)
+ # - case resource
+ # when Chef::Resource::MyLwrp
+ # end
+ #
resource_subclass = class_eval <<-EOM, __FILE__, __LINE__+1
class Chef::Resource::#{class_name} < resource_class
def initialize(*args, &block)
@@ -1289,7 +1302,7 @@ class Chef
self
end
EOM
- # Make case, is_a and kind_of work with the new subclass, for backcompat
+ # Make case, is_a and kind_of work with the new subclass, for backcompat.
# Any subclass of Chef::Resource::ResourceClass is already a subclass of resource_class
# Any subclass of resource_class is considered a subclass of Chef::Resource::ResourceClass
resource_class.class_eval do
diff --git a/lib/chef/resource/lwrp_base.rb b/lib/chef/resource/lwrp_base.rb
index ea47ad4b06..c486233020 100644
--- a/lib/chef/resource/lwrp_base.rb
+++ b/lib/chef/resource/lwrp_base.rb
@@ -58,10 +58,7 @@ class Chef
resource_class.class_from_file(filename)
# Make a useful string for the class (rather than <Class:312894723894>)
- resource_class.class_eval do
- define_method(:kind_of?) { |other| other.class <= resource_class }
- define_method(:is_a?) { |other| other.class <= resource_class }
-
+ resource_class.instance_eval do
define_singleton_method(:to_s) do
"LWRP resource #{resource_name} from cookbook #{cookbook_name}"
end
@@ -73,7 +70,7 @@ class Chef
LWRPBase.loaded_lwrps[filename] = true
# Create the deprecated Chef::Resource::LwrpFoo class
- resource_subclass = Chef::Resource.register_deprecated_lwrp_class(resource_class, convert_to_class_name(resource_name))
+ Chef::Resource.register_deprecated_lwrp_class(resource_class, convert_to_class_name(resource_name))
resource_class
end