Redmineのプラグインを作っていたら
malformed header from script. Bad header=XXXXXXX: dispatch.cgi, referer: http://localhost/redmine/controller_name
と怒られた。WEBrickだとうまくいくのに、Passengerだと怒られる。
調べてみたらひできたにっきさんも3日悩んだらしくて、標準出力に何かを出力すると同じ現象が起こるらしい。
さっそくデバッグ用に標準出力にだしていたloggerのログ出力を消すと、あっさり解決。
CGIって標準出力に出力した結果がそのままwebサーバに渡されて処理されるんですね。
とあるように、なるほど。そういう動きをするのかと納得。