Похоже, проблема в дочернем скрипте, поскольку родительский скрипт в вашем вопросе работает на моем компьютере (Debian Squeeze, Ruby 1.8.7 patchlevel 249):
Я создал фиктивный дочерний скрипт bar.rb:
#!/usr/bin/ruby1.8
s = $stdin.read
$stderr.puts s
print s
Затем я запустил ваш скрипт, передав ему путь к фиктивному скрипту:
$ /tmp/foo.rb /tmp/bar.rb
Я ударил его с помощью wget:
$ wget localhost:8080/index
И увидел вывод фиктивного скрипта:
GET /index HTTP/1.0^M
User-Agent: Wget/1.12 (linux-gnu)^M
Accept: */*^M
Host: localhost:8080^M
Connection: Keep-Alive^M
^M
Я также видел, что wget получил то, что отправил:
$ cat index
GET /index HTTP/1.0
User-Agent: Wget/1.12 (linux-gnu)
Accept: */*
Host: localhost:8080
Connection: Keep-Alive
Он работал одинаково, независимо от того, сколько раз я ударил его с помощью wget.