Open1
RubyのCGIとERBでタイムアウトが起きるパターンがあるように見える
概要
- Rubyで書いたCGIでERBと組み合わせて使うと、特定のテンプレートでタイムアウトが発生する。
環境
- Ruby 3.2.0
- WEBrick 1.8.1
- CGI 0.3.6
- ERB 4.0.2
- macOS Sonoma
ソース
web.cgi
#!/usr/bin/env ruby
require "cgi"
require "erb"
cgi = CGI.new
erb = ERB.new("\nHello") # (1) NO GOOD (net::ERR_CONTENT_LENGTH_MISMATCH)
# erb = ERB.new("Hello") # (2) OK
str = erb.result(binding)
cgi.out do
str
end
現象
- (1) のパターンを与えてブラウザでweb.cgiにアクセスするとCGIがタイムアウトを起こす(期待していない動作)。開発者コンソールには
net::ERR_CONTENT_LENGTH_MISMATCH
と表示される。
- (2) のパターンを与えてブラウザでweb.cgiにアクセスするとHelloが表示される(期待した動作)
推測
- どこかでだれかが文字数のカウントに失敗している?
コメント
- どなたか、解決のヒントがあればご教示ください。
-
"\nHello"
はNO GOODですが、"Hello\n"
はOKのようです。