我遇到了最奇怪的问题。以下代码工作正常:
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
但是,通过参数获取主机/端口的小修改:
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
..并以ruby service.rb localhost 4567
...
我收到此错误:
service.rb:4:in `gets': No such file or directory - localhost (Errno::ENOENT)
在Ubuntu 11.04上使用ruby 1.9.2p0
答案 0 :(得分:12)
你试过while (l = $stdin.gets.chomp!)
吗?否则Kernel#gets
会从ARGV
读取。
答案 1 :(得分:1)
试试这样:
h = Net::HTTP.new(ARGV.shift, ARGV.shift)
while(l = gets.chomp!)
如果传入两个以上的参数,它仍然会失败。如果您想要处理ARGV.clear
,请在构建h
后致电{{1}}。