class Chef::EventDispatch::DSL

def initialize(name)

def initialize(name)
  klass = Class.new(Chef::EventDispatch::Base) do
    attr_reader :name
  end
  @handler = klass.new
  @handler.instance_variable_set(:@name, name)
  # Use event.register API to add anonymous handler if Chef.run_context
  # and associated event dispatcher is set, else fallback to
  # Chef::Config[:event_handlers]
  if Chef.run_context && Chef.run_context.events
    Chef::Log.trace("Registering handler '#{name}' using events api")
    Chef.run_context.events.register(handler)
  else
    Chef::Log.trace("Registering handler '#{name}' using global config")
    Chef::Config[:event_handlers] << handler
  end
end

def on(event_type, &block)

Returns:
  • (Chef::EventDispatch::Base) - a base handler object
def on(event_type, &block)
  validate!(event_type)
  handler.define_singleton_method(event_type) do |*args|
    instance_exec(*args, &block)
  end
end

def validate!(event_type)

def validate!(event_type)
  all_event_types = (Chef::EventDispatch::Base.instance_methods - Object.instance_methods)
  raise Chef::Exceptions::InvalidEventType, "Invalid event type: #{event_type}" unless all_event_types.include?(event_type)
end