I'm having the strangest issue. This code below works fine:
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
However, with the small modification of getting host/port from parameters:
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
..and starting with ruby service.rb localhost 4567 ...
I get this error:
service.rb:4:in `gets': No such file or directory - localhost (Errno::ENOENT)
Using ruby 1.9.2p0 on Ubuntu 11.04
Have you tried while (l = $stdin.gets.chomp!)? Otherwise Kernel#gets reads from ARGV.
Try it like this:
h = Net::HTTP.new(ARGV.shift, ARGV.shift) 
while(l = gets.chomp!)
It will still fail if you pass in more than two arguments. You should call ARGV.clear after constructing h if you want to deal with that.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With