Ruby on rails 尝试在Ruby on Rails中打开URL时出错

Ruby on rails 尝试在Ruby on Rails中打开URL时出错,ruby-on-rails,url,Ruby On Rails,Url,环境:Ruby 1.9.2、Rails 3.0.3、Ubuntu 当我尝试使用以下命令打开URL时: open("http://www.cnn.com") 我得到以下错误: Errno::ENOENT: No such file or directory - http://www.cnn.com from (irb):9:in `initialize' from (irb):9:in `open' from (irb):9 (这是一个很难搜索的话题)。这在irb和我的

环境:Ruby 1.9.2、Rails 3.0.3、Ubuntu

当我尝试使用以下命令打开URL时:

open("http://www.cnn.com")
我得到以下错误:

Errno::ENOENT: No such file or directory - http://www.cnn.com
    from (irb):9:in `initialize'
    from (irb):9:in `open'
    from (irb):9

(这是一个很难搜索的话题)。这在irb和我的应用程序中都会发生。它曾在Ruby 1.8.7和Rails 2.3.4下工作,但似乎有些变化。

我无法重现错误,在1.8.7中我得到一个File对象,在1.9.2中我得到一个StringIO对象。我的猜测是,其他一些代码正在覆盖该功能。也许您可以尝试改用对象:

require 'net/http'
require 'uri'
Net::HTTP.get_print URI.parse('http://www.cnn.com')


如果我尝试,我可以重现错误

open('http://www.google.com')
我将得到以下错误:`initialize':没有这样的文件或目录-(Errno::enoint)

相反,我需要ruby 1.9.2中的“开放uri”,它可以工作-

require 'open-uri'

url = URI.parse('http://www.google.com')
open(url) do |http|
  response = http.read
  puts "response: #{response.inspect}"
end

我在Codecademy的练习部分尝试了类似的方法。结果表明,请求需要一个结束反斜杠。显然
open('http://google.com/)
open('http://google.com)
没有

奇怪。。为什么不使用.js执行此操作?令人惊讶的是,这实际上解决了我在尝试打开图像url时收到的(404未找到)错误。
require 'open-uri'

url = URI.parse('http://www.google.com')
open(url) do |http|
  response = http.read
  puts "response: #{response.inspect}"
end