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
new(*args)
click to toggle source
Calls superclass method
# File lib/chef/exceptions.rb, line 290 def initialize(*args) super @all_failures = [] end
Public Instance Methods
client_run_failure(exception)
click to toggle source
# File lib/chef/exceptions.rb, line 302 def client_run_failure(exception) set_backtrace(exception.backtrace) @all_failures << [ "#{Chef::Dist::PRODUCT} run", exception ] end
empty?()
click to toggle source
# File lib/chef/exceptions.rb, line 317 def empty? @all_failures.empty? end
for_raise()
click to toggle source
# File lib/chef/exceptions.rb, line 321 def for_raise if @all_failures.size == 1 @all_failures[0][1] else self end end
message()
click to toggle source
# File lib/chef/exceptions.rb, line 295 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
notification_failure(exception)
click to toggle source
# File lib/chef/exceptions.rb, line 307 def notification_failure(exception) @all_failures << [ "delayed notification", exception ] end
raise!()
click to toggle source
# File lib/chef/exceptions.rb, line 311 def raise! unless empty? raise for_raise end end