StringIO
CGIのformのデータ
CGIをrubyを使って書くことがあるが、formのデータを取り込むときには、
data=cgi.params["data"].collect{|l| l.read}
というようにしている。しかし、一度readしてしまうと、もう読めなくなってしまう。これをなんとかしたかったのだが、これまでどうしたら良いかが分からなかった。調べてみたら、上のlのclassはStringIOというもので、文字列なんだけどIOとして扱えるものらしい。読み込んだデータをもとに、もう一度StringIOを作ってやれば良いのだろうということで、
cgi.params["data"]=data.collect{|l| StringIO.new(l)}
としてみたら、うまく行った。読み込むたびにこれをやるのも面倒だが。もっと良い方法があるのかも知れないが、これで動いているからまあ良いかな。