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
288 289 290 291 |
# File 'lib/chef/exceptions.rb', line 288 def initialize(*args) super @all_failures = [] end |
Instance Method Details
#client_run_failure(exception) ⇒ Object
300 301 302 303 |
# File 'lib/chef/exceptions.rb', line 300 def client_run_failure(exception) set_backtrace(exception.backtrace) @all_failures << [ "chef run", exception ] end |
#empty? ⇒ Boolean
315 316 317 |
# File 'lib/chef/exceptions.rb', line 315 def empty? @all_failures.empty? end |
#for_raise ⇒ Object
319 320 321 322 323 324 325 |
# File 'lib/chef/exceptions.rb', line 319 def for_raise if @all_failures.size == 1 @all_failures[0][1] else self end end |
#message ⇒ Object
293 294 295 296 297 298 |
# File 'lib/chef/exceptions.rb', line 293 def base = "Multiple failures occurred:\n" @all_failures.inject(base) do |, (location, error)| << "* #{error.class} occurred in #{location}: #{error.message}\n" end end |
#notification_failure(exception) ⇒ Object
305 306 307 |
# File 'lib/chef/exceptions.rb', line 305 def notification_failure(exception) @all_failures << [ "delayed notification", exception ] end |
#raise! ⇒ Object
309 310 311 312 313 |
# File 'lib/chef/exceptions.rb', line 309 def raise! unless empty? raise for_raise end end |