From: Fujioka Date: 2010-01-28T22:44:04+09:00 Subject: [ruby-dev:40213] Re: regression of CGI.parse xibbarこと藤岡です。 > r19613 で、無効な QUERY_STRING を受け取った時の処理が加わりましたが > ([ruby-dev:36618]) 、この影響で以下の動作が変わっています。 > > > $ ./ruby -v -rcgi -e 'p CGI.parse("one=a&two=b&two=c&three")' > ruby 1.9.2dev (2010-01-27 trunk 26441) [i686-linux] > {"one"=>["a"], "two"=>["b", "c"], "three"=>[]} > > $ ruby18 -v -rcgi -e 'p CGI.parse("one=a&two=b&two=c&three")' > ruby 1.8.8dev (2010-01-26 revision 26430) [i686-linux] > {"three"=>[nil], "two"=>["b", "c"], "one"=>["a"]} > > > つまり、value のないキーの値が [nil] から [] になりました。この変更 > 自体を意図した仕様変更ではないと思ったので報告します。 > > まあどっちの動作でもいいとは思うのですが、どっちでもいいなら仕様変更 > しない方がいいかなと思います。rubyspec も失敗していることですし。 > ですが 1.9.1 には入ってしまっているので、もしこれで行くと言うことなら > rubyspec 側に修正をお願いしようと思います。 > これは[nil]を返す方がおかしいだろうと思いました。 要素がないんだから[]を返した方が嬉しいはずです。 というわけで、仕様変更です。