class Chef::Exceptions::MultipleFailures
Exception class for collecting multiple failures. Used when running delayed notifications so that chef can process each delayed notification even if chef client or other notifications fail.
Public Class Methods
Source
# File lib/chef/exceptions.rb, line 327 def initialize(*args) super @all_failures = [] end
Calls superclass method
Public Instance Methods
Source
# File lib/chef/exceptions.rb, line 339 def client_run_failure(exception) set_backtrace(exception.backtrace) @all_failures << [ "#{ChefUtils::Dist::Infra::PRODUCT} run", exception ] end
Source
# File lib/chef/exceptions.rb, line 358 def for_raise if @all_failures.size == 1 @all_failures[0][1] else self end end
Source
# File lib/chef/exceptions.rb, line 332 def message base = "Multiple failures occurred:\n" @all_failures.inject(base) do |message, (location, error)| message << "* #{error.class} occurred in #{location}: #{error.message}\n" end end
Source
# File lib/chef/exceptions.rb, line 344 def notification_failure(exception) @all_failures << [ "delayed notification", exception ] end
Source
# File lib/chef/exceptions.rb, line 348 def raise! unless empty? raise for_raise end end