如果进程以参数启动,则Ruby readline会失败

我有一个最奇怪的问题.以下代码工作正常:
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

解决方法

你有没有尝试过(l = $stdin.gets.chomp!)?否则Kernel#从ARGV读取.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...