From: "Shirai,Kaoru" Date: 2003-07-16T23:59:54+09:00 Subject: [ruby-list:37887] Re: ruby 1.8でのCGI#[]の挙動  白井です。  最近 1.8.0-preview3 へ移行を初めて、同じくこの挙動でハマりました。こ のようなコードが常に真になってしまうからです。 if cgi["param"][0] ... end cgi.params を使うと 1.6.8 と同じ使い方ができるのが唯一の救いでした。大 抵 CGI のインスタンスには cgi という変数名を使っているので、 find -name '*.cgi' -or -name '*.rb' -print0 \ |xargs -0 -- dpkruby-filter-replace -v 'src.gsub(%r"cgi\[", "cgi.params[")' などとして自分のソースを一気に置換しています。 > |仕様を変更する場合は、原則として、新しいクラスを設けるか新しいメソッド > |を設けることによって行った方がいいように思います。Net::HTTPのように、 > |特定のメソッドを呼ぶと挙動が変わるというのも、勘弁してほしいです。 > > おっしゃることは分かります。機能拡張は基本的にその方針で良い > と思うのですが、その方針だけでは「過去の間違った設計」を正す > ことが永遠に不可能です。今回の件は(Net::HTTPも)そういう間違っ > た設計に関することです。  私もこのような場合は新しいメソッドにした方が良いと思います。特に CGI#[] は既に多くのアプリケーションから使われていますし、これまでに刊 行された書籍のサンプルもほとんどこれを前提にしていますから、仕様変更の 影響は重大です。  [ruby-list:32294] Re: fastcgi.rb and cgi.rb 以下では他にも色々な改善 点が議論されていますが、従来の動作に大きく影響を与えるのであれば cgi2.rb と CGI2 のように新しいバージョンのライブラリとクラスを新設して 欲しかったと思います。 -- Shirai,Kaoru Korinkan Ltd. - http://www.korinkan.co.jp/ …あなたのコミュニティをインターネットで支えます…