CGIのリクエストパラメータ消失
Rubyを使ってるシステムで
クライアントからのリクエストがCGI側に到達したときに CGI::params でパラメータが受け取れないときがある。
環境依存だとは思うのだけど、一日に数回発生するのでこのまま見ないことにするわけにもいかないので、クソ忙しいなか調査している。
これから調べること
ruby の cgi.rb の initialize_query メソッドに無理くりログを吐かせる処理を入れて、どこまでパラメータが渡っているか白黒つける。
ここで入ってこなけりゃ mod_ruby*1 が何かやらかしているっぽい、と見当を付けることができるはずだ。
ついでに mod_ruby についてちょっと調べる
なんとなく apache に組み込んで動作を早くするっていうイメージでしかわかっていなかったのでちょっと調べてみた。
んで、2つめの記事を見ていて気になったのだけど
CGI::Sessionが上手く動きません。
mod_rubyではCGI::Sessionは自動的にクローズされません。したがって明示的にクローズしてやる必要があります。
session = CGI::Session.new(...) begin ... ensure session.close endこの問題はCGI::Session特有のものではありません。ファイルなども同様にクローズする必要があります。
こ、これ大丈夫か……? おれはフロントエンドばっかりやっていたのでサーバ側(Ruby側)の実装を良く見ていないんだけど、 mod_ruby を使ってる場合というのを意識して作らないといけないっぽいが……。