Reputation: 2169
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
Upvotes: 6
Views: 866
Reputation: 66837
Have you tried while (l = $stdin.gets.chomp!)
? Otherwise Kernel#gets
reads from ARGV
.
Upvotes: 12
Reputation: 206689
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.
Upvotes: 1