なひです.

> From: wakou / fsinet.or.jp [mailto:wakou / fsinet.or.jp]
> Sent: Thursday, September 02, 1999 4:10 PM

> >   foo.cgi?b=
> > 
> > のときは,cgi[ "a" ] = nil,cgi[ "b" ] = ""になるんですよね.
> 
> 新案として、cgi["a"] == [] はいかがでしょうか?

すいません,そうですそうでした[0]を忘れていました.m(..m

> cgi["a"] == nil,  cgi["b"] == [""], cgi["a"][0] == Error, cgi["b"][0] == ""
> cgi["a"] == [],   cgi["b"] == [""], cgi["a"][0] == nil,   cgi["b"][0] == ""
> 
> 前者が現在。後者が新案です。どちらの場合も cgi.has_key?("a") == false
> は有効です。

えーとすいません,どれがどれに対応するのか
よくわからなくなってきました.^^;

なひの希望としては,

  (i) foo.cgi?a=&b=のとき
    1. cgi[ "a" ] == [ "" ]
    2. cgi[ "b" ] == [ "" ]
    3. cgi.has_key?( "a" ) == true
    4. cgi.has_key?( "b" ) == true

  (ii) foo.cgi?b=&b=のとき
    5. cgi[ "a" ] == []
    6. cgi[ "b" ] == [ "", "" ]
    7. cgi.has_key?( "a" ) == false
    8. cgi.has_key?( "b" ) == true

です.あれ,これだと現在のままかな...5.だけ変更になるんですかね.

# すいません実装の手間を考えずに書いてます.^^;

> > だとしたら,cgi.remote_userとかも,
> > ヘッダにない時は""でなくてnilになってくれると嬉しいですー.

訂正です.REMOTE_USERはヘッダ経由じゃない環境変数ですね.^^;
気持ちとしては,例えばHTTP_PROXY等も含めて,というつもりでした.

> ああ、なるほど。手抜きをしたい場合には cgi.remote_user 等で、チェック
> を自前でしたい場合には ENV['REMOTE_USER'] 等という使い分けを考えていま
> した。

なるほどそういうことでしたか.では,なひみたいな使い方の場合は,
ENV['REMOTE_USER']を使うべきですね.
うーんと,いやまてよ,環境変数を参照するのって,
mod_ruby環境で大丈夫かな...?

> また、nil を返すようにしたとしても、その場合の対応は、
> 
> if cgi.remote_user or cgi.remote_user.empty?
> 
> という感じで、空き文字列が返ってきた場合と同じになるようにも思われまし
> た。その場合、どうせなら if cgi.remote_user.empty? だけで済む方が便利
> かなとも。いかがでしょうか?

そうですね.なひとしては,

  「ない」というのと「あるけど空文字列」を分けたい,

というのが最初の動機ですので,環境変数を使うのに問題がなければ,
そちらを利用して実現したいと思います.

「Rubyで楽しくプログラミング」という観点からは,
現仕様の方が便利かもしれませんね.なひは青山さんの判断に従いますです.