怎么预防? 在Ruby中导致错误URI错误的字符?

因为问号我感到很恐怖。 有人有同样的问题,但给出的答案返回错误:

uninitialized constant URI::Parser (NameError) 

这是我的代码(在一个rackup文件中):

 require 'rubygems' require 'rack' require 'time' require 'set' require 'uri' require 'domain_constants' require "digest/sha1" URI::DEFAULT_PARSER = URI::Parser.new(:UNRESERVED => URI::REGEXP::PATTERN::UNRESERVED + '?') 

请帮我绕过这个,我花了4个小时试图找出这个。

PS:

我首先得到的错误是:

 ERROR bad URI `/font/dorianclm-book-webfont.eot?)%20format("eot"),%20url(http://mysite.co:9292/font/dorianclm-book-webfont),%20url(http://mysite.co:9292/font/dorianclm-book-webfont'. 

URI::Parser是Ruby 1.9特有的。 比较URI模块文档:

  • 1.8: http : //ruby-doc.org/stdlib-1.8.7/libdoc/uri/rdoc/classes/URI.html
  • 1.9: http : //ruby-doc.org/stdlib/libdoc/uri/rdoc/classes/URI.html

我打赌你使用的是Ruby 1.8。

URI :: DEFAULT_PARSER猴子补丁仅适用于ruby 1.9(并且首先不是非常理想的事情)。

1.8中的URI模块具有相同的问题,但是在没有重写大块的情况下进行修补要困难得多。

如果您遇到默认URI解析的限制,最好的方法是使用除WEBrick之外的其他东西(例如nginx)。