Module: Amazon::AWS::Error

Defined in:
lib/ruby-paa/aws.rb

Overview

All dynamically generated exceptions occur within this namespace.

Defined Under Namespace

Classes: AWSError

Class Method Summary collapse

Class Method Details

.exception(xml) ⇒ Object



1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
# File 'lib/ruby-paa/aws.rb', line 1411

def Error.exception(xml)
  err_class = xml.elements['Code'].text.sub( /^AWS.*\./, '' )
  err_msg = xml.elements['Message'].text

  # Dynamically define a new exception class for this class of error,
  # unless it already exists.
  #
  # Note that Ruby 1.9's Module.const_defined? needs a second parameter
  # of *false*, or it will also search AWSError's ancestors.
  #
  cd_params = [ err_class ]
  cd_params << false if RUBY_VERSION >= '1.9.0'

  unless Amazon::AWS::Error.const_defined?( *cd_params )
    Amazon::AWS::Error.const_set( err_class, Class.new( AWSError ) )
  end

  # Generate and return a new exception from the relevant class.
  #
  Amazon::AWS::Error.const_get( err_class ).new( err_msg )
end