module Chef::Mixin

Public Class Methods

const_missing(name) click to toggle source

Const missing hook to look up deprecated constants defined with deprecate_constant. Emits a warning to the logger and returns the replacement constant. Will call super, most likely causing an exception for the missing constant, if name is not found in the deprecated_constants collection.

Calls superclass method
# File lib/chef/mixin/deprecation.rb, line 44
def self.const_missing(name)
  if new_const = deprecated_constants[name]
    Chef::Log.warn(new_const[:message])
    Chef::Log.warn("Called from: \n#{caller[0...3].map { |l| "\t#{l}" }.join("\n")}")
    new_const[:replacement]
  else
    super
  end
end
deprecate_constant(name, replacement, message) click to toggle source

Add a deprecated constant to the Chef::Mixin namespace.

@param name [Symbol] the constant name, as a relative symbol. @param replacement [Object] the constant to return instead. @param message [String] A message telling the user what to do instead. @example

deprecate_constant(:RecipeDefinitionDSLCore, Chef::DSL::Recipe, <<-EOM)
  Chef::Mixin::RecipeDefinitionDSLCore is deprecated, use Chef::DSL::Recipe instead.
EOM
# File lib/chef/mixin/deprecation.rb, line 35
def self.deprecate_constant(name, replacement, message)
  deprecated_constants[name] = { replacement: replacement, message: message }
end
deprecated_constants() click to toggle source
# File lib/chef/mixin/deprecation.rb, line 22
def self.deprecated_constants
  @deprecated_constants ||= {}
end