Parar URIs com chaves, URI :: InvalidURIError: URI ruim (não é URI?)

Usando o ruby 1.9.2-p290. Me deparei com um problema ao tentar analisar um URI da seguinte forma:

require 'uri'
my_uri = "http://www.anyserver.com/getdata?anyparameter={330C-B5A2}"
the_uri = URI.parse(my_uri)

emitindo o seguinte erro:

URI::InvalidURIError: bad URI(is not URI?)

Eu preciso de uma solução diferente da codificação das chaves sempre que assim:

new_uri = URI.encode("http://www.anyserver.com/getdata?anyparameter={330C-B5A2}")
=> "http://www.anyserver.com/getdata?anyparameter=%7B330C-B5A2%7D"

gora, eu posso analisar o new_uri como de costume, mas precisava fazer isso toda vez que eu precisava. Qual é a maneira mais simples de conseguir isso sem fazer isso o tempo todo?

Publico minha própria solução, pois não tinha visto isso exatamente como resolv

# Accepts URIs when they contain curly braces
# This overrides the DEFAULT_PARSER with the UNRESERVED key, including '{' and '}'
module URI
  def self.parse(uri)
    URI::Parser.new(:UNRESERVED => URI::REGEXP::PATTERN::UNRESERVED + "\{\}").parse(uri)
  end
end

Agora eu posso usar URI.parse (uri) com uri contendo chaves e nenhum erro é gerad

questionAnswers(2)

yourAnswerToTheQuestion