2012-04-10 8 views
1

私はコードを持っている:、オープン-URIのRubyエラー

require 'open-uri' 
print "Enter a URL: " 
add = gets 
added = add.sub!(/http:\/\//, "") 
puts "Info from: #{add}" 
open("#{add}") do |f| 
    img = f.read.scan(/<img/) 
    img = img.length 
    puts "\t#{img} images" 
    f.close 
end 
open("#{add}") do |f| 
    links = f.read.scan(/<a/) 
    links = links.length 
    puts "\t#{links} links" 
    f.close 
end 
open("#{add}") do |f| 
    div = f.read.scan(/<div/) 
    div = div.le1ngth 
    puts "\t#{div} div tags" 
    f.close 
end 

(はい、私はそれが良いコードではありません知っている、それについてしてくださいコメントしていない) 私はそれを実行すると、およびURLのために私が入力し、言う:

http://stackoverflow.com 

私は次のエラーを取得する:

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/open-uri.rb:32:in `initialize': No such file or directory - http (Errno::ENOENT) 
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/open-uri.rb:32:in `open_uri_original_open' 
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/open-uri.rb:32:in `open' 

はなぜこのエラーが出てくるんとどのように私はそれを修正することができますか?

答えて

2

String.sub!方法は、代わりに文字列を置換し、そうadd.sub!(/http:\/\//, "")addedの設定に加えて、addの値を変更します。

URIを使用してopen(name)メソッドを使用するには、nameの値がhttp://のようなURIスキームで始まる必要があります。

あなたがaddedを設定したい場合は、そのようなので、実行します。

added = add.sub(/http:\/\//, "") 
関連する問題