[#39021] CGI#[] on Ruby 1.8.1 — 堀川 久 <vzw00011@...>
明けましておめでとうございます。今年もよろしくです。
2 messages
2004/01/05
[#39026] Re: CGI#[] on Ruby — 堀川 久 <VZW00011@...>
おはようございます。
7 messages
2004/01/07
[#39031] ruby-mysqlのlist_dbs — Takashi Kanai <kanai@...4u.or.jp>
こんにちは、金井です。
5 messages
2004/01/08
[#39040] 内包オブジェクトがnilになったら自分もnilになるには? — Yac <yac@...>
岡といいます。こんにちは。
9 messages
2004/01/13
[#39051] — ruby@...
みなさん、こんにちは。みかみと申します。
7 messages
2004/01/19
[#39052] Re: compile error in ext/openssl
— GOTOU Yuuzou <gotoyuzo@...>
2004/01/19
In message <20040119074144.9461EAF55@mail.nmn.jp>,
[#39073] Ruby1.8のWIN32OLEで-wのとき — Takashi Kanai <kanai@...4u.or.jp>
金井です。
12 messages
2004/01/24
[#39074] Re: Ruby1.8のWIN32OLEで-wのとき
— Yac <yac@...>
2004/01/25
岡といいます。
[#39075] Re: Ruby1.8のWIN32OLEで-wのとき
— Takashi Kanai <kanai@...4u.or.jp>
2004/01/25
金井です。
[#39076] Re: Ruby1.8のWIN32OLEで-wのとき
— Yac <yac@...>
2004/01/25
岡です。
[#39077] Re: Ruby1.8のWIN32OLEで-wのとき
— Takashi Kanai <kanai@...4u.or.jp>
2004/01/25
金井です。
[#39078] Re: Ruby1.8のWIN32OLEで-wのとき
— "U.Nakamura" <usa@...>
2004/01/25
こんにちは、なかむら(う)です。
[ruby-list:39021] CGI#[] on Ruby 1.8.1
From:
堀川 久 <vzw00011@...>
Date:
2004-01-05 12:02:52 UTC
List:
ruby-list #39021
明けましておめでとうございます。今年もよろしくです。
Ruby 1.8.1で、CGI#[]の戻り値のクラスであるCGI::QueryExtension::Valueが
Stringの派生クラスではなくなりましたが、副作用が出ています。
文字列(Stringインスタンス)が期待されているところでは、is_a?(String)
として値(のクラス)が正しいか検査することがあります。あるいはクラスに
よって挙動を変えることもあります。
このため、文字列と思ってCGI#[]の戻り値を使っていると、いろいろな場所で
エラーになったり、予期しない挙動になったりしています。例えばRuby/DBIな
どでもエラーが頻出します。
これを避けるためには、次のように書かなければならず、悲しくなります。
foo = cgi["foo"].to_s
~~~~~ .firstを書いていたときと変わらない!
潔く、次のようにしませんか。
def [](key)
params = @params[key]
value = params[0]
if @multipart
if value
return value
elsif defined? StringIO
StringIO.new("")
else
Tempfile.new("CGI")
end
else
value || "" # 文字列を返す。
end
end
--
HORIKAWA Hisashi (in Kanji: 堀川 久)
Netsphere Laboratories http://www.nslabs.jp/