From: Minero Aoki Date: 2005-11-03T07:11:16+09:00 Subject: [ruby-dev:27630] open-uri does not work 青木です。 CVS trunk HEAD で次のようなエラーが出ます。 ~ % ruby -ropen-uri -e 'URI("http://i.loveruby.net").read' /usr/local/pkg/ruby/lib/ruby/1.9/open-uri.rb:233:in `open_http': Non-HTTP proxy from /usr/local/pkg/ruby/lib/ruby/1.9/open-uri.rb:688:in `buffer_open' from /usr/local/pkg/ruby/lib/ruby/1.9/open-uri.rb:193:in `open_loop' from /usr/local/pkg/ruby/lib/ruby/1.9/open-uri.rb:191:in `open_loop' from /usr/local/pkg/ruby/lib/ruby/1.9/open-uri.rb:137:in `open_uri' from /usr/local/pkg/ruby/lib/ruby/1.9/open-uri.rb:590:in `open' from /usr/local/pkg/ruby/lib/ruby/1.9/open-uri.rb:598:in `read' from -e:1 例外が発生しているのは以下の場所です。 def OpenURI.open_http(buf, target, proxy, options) # :nodoc: if proxy proxy_uri, proxy_user, proxy_pass = proxy raise "Non-HTTP proxy URI: #{proxy_uri}" if proxy_uri.class != URI::HTTP end 調べてみると、引数 proxy が [nil, nil, nil] になっていました。 どう変えればいいのかよくわからないのですが、とりあえず次のように 変更したところ目的のプログラム (samidare) は動くようになりました。 --- lib/open-uri.rb 30 Sep 2005 16:48:46 -0000 1.42 +++ lib/open-uri.rb 2 Nov 2005 20:19:13 -0000 @@ -173,7 +173,7 @@ end case opt_proxy when true - find_proxy = lambda {|u| [u.find_proxy, nil, nil]} + find_proxy = lambda {|u| pxy = u.find_proxy; pxy ? [pxy, nil, nil] : nil} when nil, false find_proxy = lambda {|u| nil} when String -- 青木峰郎