Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.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 URI.parse make";计划;部分冻结_Ruby - Fatal编程技术网

Ruby URI.parse make";计划;部分冻结

Ruby URI.parse make";计划;部分冻结,ruby,Ruby,谁能给我解释一下下面的怪事 1.9.3-p286 :029 > u = URI.parse("http://www.nevermind.org") => #<URI::HTTP:0x007f87499a5c90 URL:http://www.nevermind.org> 1.9.3-p286 :030 > u.component.map {|c| u.send(c).frozen?} => [true, false, false, false, false

谁能给我解释一下下面的怪事

1.9.3-p286 :029 > u = URI.parse("http://www.nevermind.org")
 => #<URI::HTTP:0x007f87499a5c90 URL:http://www.nevermind.org>
1.9.3-p286 :030 > u.component.map {|c| u.send(c).frozen?}
 => [true, false, false, false, false, false, false]
1.9.3-p286:029>u=URI.parse(“http://www.nevermind.org")
=> #
1.9.3-p286:030>u.component.map{| c | u.send(c).冻结?}
=>[真,假,假,假,假,假,假]

看在上帝的份上,为什么解析url的“scheme”部分被冻结了?查看URI源代码并没有得到任何合理的答案。

源代码()说明冻结scheme部分的代码已经存在多年(超过10年)。我明白这并不能回答你的问题,我只是希望我的评论能帮助别人给出正确的答案。我个人认为冻结scheme部分与安全性有关,但我无法想象如果没有
@scheme.freeze
的话会如何破坏。现在冻结了更多的URI组件。在Ruby 2.2.1中,“scheme”、“userinfo”、“port”、“query”和“fragment”都是冻结的。“userinfo”、“host”和“path”并没有被冻结。这个问题让我问了一个问题,我很确定这种情况存在的唯一原因是有人在重构时忘记了删除某些内容。不过我不确定。最初的评论只是“添加了URI库”,这表明它存在于旧的、独立版本的库中,但我不知道在哪里可以找到它(如果它仍然可用!),所以我怀疑这个问题能否得到回答。