Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何防止管道字符在Rails 3/Ruby 1.9.2中导致错误的URI错误?_Ruby On Rails_Ruby_Uri - Fatal编程技术网

Ruby on rails 如何防止管道字符在Rails 3/Ruby 1.9.2中导致错误的URI错误?

Ruby on rails 如何防止管道字符在Rails 3/Ruby 1.9.2中导致错误的URI错误?,ruby-on-rails,ruby,uri,Ruby On Rails,Ruby,Uri,在我的应用程序中实现OAuth2时,我需要处理URI,如: 不确定这是Rails 3还是Ruby 1.9.2的问题(可能是URI.parse),但无论如何,WEBrick都会踢坏URI 有人知道解决办法吗?谢谢。我最后用瘦换了WEBrick,没有问题。我最近遇到了同样的需求(和问题)。在Rails3和Ruby1.9.2上 这对于我们的登台/生产环境(nginx)来说不是问题,但我有兴趣了解WEBrick的问题所在。事实证明,问题出在URI::Parser.split方法中,特别是它的模式匹配是

在我的应用程序中实现OAuth2时,我需要处理URI,如:

不确定这是Rails 3还是Ruby 1.9.2的问题(可能是URI.parse),但无论如何,WEBrick都会踢坏URI


有人知道解决办法吗?谢谢。

我最后用瘦换了WEBrick,没有问题。

我最近遇到了同样的需求(和问题)。在Rails3和Ruby1.9.2上

这对于我们的登台/生产环境(nginx)来说不是问题,但我有兴趣了解WEBrick的问题所在。事实证明,问题出在URI::Parser.split方法中,特别是它的模式匹配是如何与URI::REGEXP::pattern常量一起播种的

您可以通过将以下内容添加到config/environments/development.rb来“修复”此问题(假设您只在dev.中使用WEBrick,或者您可以将其放在config/initializers文件中)


注意:这是设置:UNRESERVED=>“-!~*”()a-zA-Z\d |“

初始值设定项工作正常,但我最终使用了URI.escape,因为它看起来更干净,似乎可以处理更多的情况

URI.join(origin_url, URI.escape(parsed_link)).to_s
加上这段代码似乎并不正确

# I need this because URI.join in crawler.rb bombs with '|' symbols
old_verbose = $VERBOSE
$VERBOSE = nil
URI::DEFAULT_PARSER = URI::Parser.new(:UNRESERVED => URI::REGEXP::PATTERN::UNRESERVED + '|')
$VERBOSE = old_verbose

您可能需要修复标题中的打字错误……您是否已将
#coding:UTF-8
放在文件顶部?遗憾的是,1.9+对字符非常敏感。
URI::Parser
===>
name错误:未初始化的常量URI::Parser
。有什么想法吗?这就是Ruby1.8.7是的,1.8中的URI是非常不同的,而且如果不重新编写URI模块的大块,就很难进行修补。如果您有这个问题,最好的办法是升级到1.9或使用WebRick以外的其他工具。这是一个非常好的解决方案。我遇到的一个问题是,即使你转义了URL,一些网站(如yahoo)也会将你转发到一个带有未转义字符(!)的URL,OpenURI不断崩溃。谢谢
# I need this because URI.join in crawler.rb bombs with '|' symbols
old_verbose = $VERBOSE
$VERBOSE = nil
URI::DEFAULT_PARSER = URI::Parser.new(:UNRESERVED => URI::REGEXP::PATTERN::UNRESERVED + '|')
$VERBOSE = old_verbose