Ruby readline falla si el proceso comenzó con argumentos

Estoy teniendo el problema más extraño. Este código a continuación funciona bien:

require 'json'
require 'net/http'
h = Net::HTTP.new("localhost", 4567) 
while(l = gets.chomp!)
   res = h.post("/api/v1/service/general",l)
   puts res.body
end

Sin embargo, con la pequeña modificación de obtener host / puerto de los parámetros:

require 'json'
require 'net/http'
h = Net::HTTP.new(ARGV[0], ARGV[1]) 
while(l = gets.chomp!)
   res = h.post("/api/v1/service/general",l)
   puts res.body
end

.. y comenzando conruby service.rb localhost 4567 ...

Me sale este error:

service.rb:4:in `gets': No such file or directory - localhost (Errno::ENOENT)

Utilizando ruby 1.9.2p0 en Ubuntu 11.04

Respuestas a la pregunta(2)

Su respuesta a la pregunta