Module: Chef::DSL::MethodMissing Deprecated
- Included in:
- Recipe
- Defined in:
- lib/chef/dsl/method_missing.rb
Overview
Deprecated.
scheduled to die in a Chef 13 fire
Instance Method Summary collapse
- #describe_self_for_error ⇒ Object
-
#method_missing(method_symbol, *args, &block) ⇒ Object
DEPRECATED: method_missing must live for backcompat purposes until Chef 13.
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method_symbol, *args, &block) ⇒ Object
DEPRECATED: method_missing must live for backcompat purposes until Chef 13.
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/chef/dsl/method_missing.rb', line 34 def method_missing(method_symbol, *args, &block) # # If there is already DSL for this, someone must have called # method_missing manually. Not a fan. Not. A. Fan. # if respond_to?(method_symbol) Chef.log_deprecation("Calling method_missing(#{method_symbol.inspect}) directly is deprecated in Chef 12 and will be removed in Chef 13. Use public_send() or send() instead.") return send(method_symbol, *args, &block) end # # If a definition exists, then Chef::DSL::Definitions.add_definition was # never called. DEPRECATED. # if run_context.definitions.has_key?(method_symbol.to_sym) Chef.log_deprecation("Definition #{method_symbol} (#{run_context.definitions[method_symbol.to_sym]}) was added to the run_context without calling Chef::DSL::Definitions.add_definition(#{method_symbol.to_sym.inspect}). This will become required in Chef 13.") Chef::DSL::Definitions.add_definition(method_symbol) return send(method_symbol, *args, &block) end # # See if the resource exists anyway. If the user had set # Chef::Resource::Blah = <resource>, a deprecation warning will be # emitted and the DSL method 'blah' will be added to the DSL. # resource_class = Chef::ResourceResolver.resolve(method_symbol, node: run_context ? run_context.node : nil) if resource_class Chef::DSL::Resources.add_resource_dsl(method_symbol) return send(method_symbol, *args, &block) end begin super rescue NoMethodError raise NoMethodError, "No resource or method named `#{method_symbol}' for #{describe_self_for_error}" rescue NameError raise NameError, "No resource, method, or local variable named `#{method_symbol}' for #{describe_self_for_error}" end end |
Instance Method Details
#describe_self_for_error ⇒ Object
22 23 24 25 26 27 28 29 30 |
# File 'lib/chef/dsl/method_missing.rb', line 22 def describe_self_for_error if respond_to?(:name) %Q{`#{self.class} "#{name}"'} elsif respond_to?(:recipe_name) %Q{`#{self.class} "#{recipe_name}"'} else to_s end end |