Module: Poise::Helpers::ResourceSubclass::ClassMethods
- Included in:
- Poise::Helpers::ResourceSubclass
- Defined in:
- lib/poise/helpers/resource_subclass.rb
Overview
Instance Method Summary collapse
- #subclass_providers!(superclass_resource_name = nil, resource_name: nil) ⇒ Object
-
#subclass_resource_equivalents ⇒ Array<Symbol>
An array of names for the resources this class is equivalent to for the purposes of provider resolution.
Instance Method Details
#subclass_providers!(superclass_resource_name = nil, resource_name: nil) ⇒ Object
30 31 32 33 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 |
# File 'lib/poise/helpers/resource_subclass.rb', line 30 def subclass_providers!(superclass_resource_name=nil, resource_name: nil) resource_name ||= self.resource_name superclass_resource_name ||= if superclass.respond_to?(:resource_name) superclass.resource_name elsif superclass.respond_to?(:dsl_name) superclass.dsl_name else raise Poise::Error.new("Unable to determine superclass resource name for #{superclass}. Please specify name manually via subclass_providers!('name').") end.to_sym # Deal with the node maps. node_maps = {} node_maps['handler map'] = Chef.provider_handler_map if defined?(Chef.provider_handler_map) node_maps['priority map'] = Chef.provider_priority_map if defined?(Chef.provider_priority_map) # Patch anything in the descendants tracker. Chef::Provider.descendants.each do |provider| node_maps["#{provider} node map"] = provider.node_map if defined?(provider.node_map) end if defined?(Chef::Provider.descendants) node_maps.each do |map_name, node_map| map = node_map.respond_to?(:map, true) ? node_map.send(:map) : node_map.instance_variable_get(:@map) if map.include?(superclass_resource_name) Chef::Log.debug("[#{self}] Copying provider mapping in #{map_name} from #{superclass_resource_name} to #{resource_name}") map[resource_name] = map[superclass_resource_name].dup end end # Add any needed equivalent names. if superclass.respond_to?(:subclass_resource_equivalents) subclass_resource_equivalents.concat(superclass.subclass_resource_equivalents) else subclass_resource_equivalents << superclass_resource_name end subclass_resource_equivalents.uniq! end |
#subclass_resource_equivalents ⇒ Array<Symbol>
An array of names for the resources this class is equivalent to for the purposes of provider resolution.
67 68 69 |
# File 'lib/poise/helpers/resource_subclass.rb', line 67 def subclass_resource_equivalents @subclass_resource_names ||= [resource_name.to_sym] end |