はじめまして、鈴木です。

山下さんの疑問とは別の事かもしれませんが、試していたら気が付いたの
で便乗質問です。

In message "[ruby-list:30234] Cookie について"
  on 2001/06/14 18:59:50, "Toshiaki YAMASHITA" <yamashita / woo.ne.jp> wrote:

> c_num=cgi.cookies['c_num']
> c_no=cgi.cookies['c_no']

Cookie に 'c_num' と 'c_no' が存在しない場合(ショッピングの開始時
とか)は [] が返って来ますが、例えば num = "1", no = "2" とすると、

> c_num << num
> c_no << no

p c_num => ["1", "2"]
p c_no  => ["1", "2"]

になります。c_num と c_no が同一のオブジェクトを指している様に見え
ますが、そういうものなのでしょうか?

Coolie の値を得る時に、例えば以下の様に必ず空配列に加える、

c_num = [] + cgi.cookies['c_num']
c_no = [] + cgi.cookies['c_no']

あるいは、Cookie が存在しない場合は明示的(?)に空配列を作る、

c_num = cgi.cookies['c_num'].empty? ? [] : cgi.cookies['c_num']
c_no = cgi.cookies['c_no'].empty? ? [] : cgi.cookies['c_no']

等で、

c_num << num
c_no << no

p c_num => ["1"]
p c_no  => ["2"]

と、一応期待した結果が得られます。

# Cookie はあくまでもセッション管理だけに用いて、データの保持はサー
# バ側でやる方が一般的、且つ確実だとは思いますが。

-- 
loup <loup / fj8.so-net.ne.jp>