Exception: Chef::Exceptions::MultipleFailures
- Inherits:
-
StandardError
- Object
- StandardError
- Chef::Exceptions::MultipleFailures
- Defined in:
- lib/chef/exceptions.rb
Overview
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.
Instance Method Summary collapse
- #client_run_failure(exception) ⇒ Object
- #empty? ⇒ Boolean
- #for_raise ⇒ Object
-
#initialize(*args) ⇒ MultipleFailures
constructor
A new instance of MultipleFailures.
- #message ⇒ Object
- #notification_failure(exception) ⇒ Object
- #raise! ⇒ Object
Constructor Details
#initialize(*args) ⇒ MultipleFailures
Returns a new instance of MultipleFailures.
289 290 291 292 |
# File 'lib/chef/exceptions.rb', line 289 def initialize(*args) super @all_failures = [] end |
Instance Method Details
#client_run_failure(exception) ⇒ Object
301 302 303 304 |
# File 'lib/chef/exceptions.rb', line 301 def client_run_failure(exception) set_backtrace(exception.backtrace) @all_failures << [ "#{Chef::Dist::PRODUCT} run", exception ] end |
#empty? ⇒ Boolean
316 317 318 |
# File 'lib/chef/exceptions.rb', line 316 def empty? @all_failures.empty? end |
#for_raise ⇒ Object
320 321 322 323 324 325 326 |
# File 'lib/chef/exceptions.rb', line 320 def for_raise if @all_failures.size == 1 @all_failures[0][1] else self end end |
#message ⇒ Object
294 295 296 297 298 299 |
# File 'lib/chef/exceptions.rb', line 294 def base = "Multiple failures occurred:\n" @all_failures.inject(base) do |, (location, error)| << "* #{error.class} occurred in #{location}: #{error.}\n" end end |
#notification_failure(exception) ⇒ Object
306 307 308 |
# File 'lib/chef/exceptions.rb', line 306 def notification_failure(exception) @all_failures << [ "delayed notification", exception ] end |
#raise! ⇒ Object
310 311 312 313 314 |
# File 'lib/chef/exceptions.rb', line 310 def raise! unless empty? raise for_raise end end |