松尾です。

From: wakou / fsinet.or.jp

> ありがとうございます。使い込まれている方のご意見はとてもありがたいです。

お役に立てて何よりです。


で、こちらなんですが、

> これに対しては cgi["name1"].to_s とすると、nil も to_s を持つという事
> から、name1 が含まれなかった場合もそのまま動いてしまう手がありますが、
> やはり本筋としては、cgi.has_key?("name1") などであらかじめチェックして
> おくか、例外処理が手軽な事を利用して、rescue の方がいいような気がして
> います。

ええ。でも。

チェックにしても、いい手がないかなぁと思っていました。CGIとしてデータ
が入ってないことはよくあることなので、準正常系としてきちんと後始末する
ようなパターンを確立したいのですが…。

業務ロジックルーチンが求めるのは、cgi["name1"][0]が定義域に含まれてい
るかどうかということだけなので、cgi["name1"][0]にアクセスする前に余計
な手間をかけたくないんです。

if cgi.has_key?("name1") and
   cgi["name1"].kind_of?(Array) and
   !cgi["name1"].empty? then

なんてチェックは出来れば省きたい。かといってRubyの発生する例外に任せて
しまうのもちょっと避けたい。Rubyの発生する例外は別の意味で使いたいから。

"name1"に関するデータがなかったら、cgi["name1"] には [nil] を入れてお
く、ってのはどうかな… なんて考えてたりします。もちろんデータの名前の
一覧(["name1",...])は先に渡しておかなければなりませんが。