def error!(name, *args)
      context   = args.extract_options!
      klass     = Errors[name] || Error
      exception = klass.new(*args).tap { |e| e.context = context }
      raise exception
    end
def error!(name, *args)
      context   = args.extract_options!
      klass     = Errors[name] || Error
      exception = klass.new(*args).tap { |e| e.context = context }
      raise exception
    end
Dynamically looks up and then throws the error given by a symbolic name.
 Optionally takes a string message argument and a hash of 'context'.
 @overload error!(name, context = {})
   @param [Symbol] name the name of the exception, looked up using RocketPants::Errors
   @param [Hash{Symbol => Object}] context the options passed to the error message translation.
 @overload error!(name, message, context = {})
   @param [Symbol] name the name of the exception, looked up using RocketPants::Errors
   @param [String] message an optional message describing the error
   @param [Hash{Symbol => Object}] context the options passed to the error message translation.
 @raise [RocketPants::Error] the error from the given options