module Poise::Helpers::ResourceName::ClassMethods
@!classmethods
Public Instance Methods
dsl_name()
click to toggle source
Used by Resource#to_text to find the human name for the resource.
@api private
# File lib/poise/helpers/resource_name.rb, line 94 def dsl_name resource_name.to_s end
included(klass)
click to toggle source
Calls superclass method
# File lib/poise/helpers/resource_name.rb, line 98 def included(klass) super klass.extend(ClassMethods) end
provides(name, *args, &block)
click to toggle source
Set the DSL name for the the resource class.
@param name [Symbol] Name of the resource. @return [void] @example
class MyResource < Chef::Resource include Poise::Resource::ResourceName provides(:my_resource) end
Calls superclass method
# File lib/poise/helpers/resource_name.rb, line 54 def provides(name, *args, &block) # Patch self.constantize so this can cope with anonymous classes. # This does require that the anonymous class define self.name though. if self.name && respond_to?(:constantize) old_constantize = instance_method(:constantize) define_singleton_method(:constantize) do |const_name| ( const_name == self.name ) ? self : old_constantize.bind(self).call(const_name) end end # Store the name for later. @provides_name ||= name # Call the original if present. The defined? is for old Chef. super(name, *args, &block) if defined?(super) end
resource_name(auto=true)
click to toggle source
Retreive the DSL name for the resource class. If not set explicitly via {provides} this will try to auto-detect based on the class name.
@param auto [Boolean] Try to auto-detect based on class name. @return [Symbol]
Calls superclass method
# File lib/poise/helpers/resource_name.rb, line 74 def resource_name(auto=true) # In 12.4+ we need to proxy through the super class for setting. return super(auto) if defined?(super) && (auto.is_a?(Symbol) || auto.is_a?(String)) return @provides_name unless auto @provides_name || if name mode = if name.start_with?('Chef::Resource') [name, 'Chef::Resource'] else [name.split('::').last] end Chef::Mixin::ConvertToClassName.convert_to_snake_case(*mode).to_sym elsif defined?(super) # No name on 12.4+ probably means this is an LWRP, use super(). super() end end