2011-02-10 43 views
12

環境:紅寶石1.9.2,Rails的3.0.3,Ubuntu的錯誤當試圖on Rails的打開在Ruby URL

當我嘗試使用打開一個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下工作,但似乎有些變化。

+0

奇怪..爲什麼不用.js來做這件事? – Trip 2011-02-10 02:07:56

回答

23

我可以重現的錯誤,如果我嘗試

open('http://www.google.com') 

我會得到這個錯誤:'初始化」 :沒有這樣的文件或目錄 - http://www.google.com(Errno :: ENOENT)

取而代之,我在紅寶石1.9.2中需要'open-uri'並且它工作 -

require 'open-uri' 

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

我不能重現錯誤,在1.8.7中我得到一個File對象,在1.9.2中我得到一個StringIO對象。我的猜測是,其他一些代碼正在重寫該功能。也許你可以嘗試使用Net::HTTP對象,而不是:

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

require 'net/http' 
require 'uri' 

url = URI.parse('http://www.cnn.com') 
res = Net::HTTP.start(url.host, url.port) {|http| 
    http.get('/') 
} 
puts res.body 
+0

謝謝youuuu !!!! – samccone 2011-10-14 04:20:51

2

我在Codecademy的練習部分嘗試了類似的東西。原來,請求想要一個結束反斜槓。顯然open('http://google.com/')經過罰款,其中open('http://google.com')沒有。

+0

奇怪的是,這實際上解決了我在嘗試打開圖片url時收到的(404未找到)錯誤。 – MTarantini 2016-12-16 19:57:33