環境変数 HTTP_PROXY の値には "http://" を含むのか含まないのか

昨日の続きでもある。
hatenaapigraph 0.1.1 にあわせて HTTP_PROXY=proxy:8080 としたら wget が動かなくなった。Ruby の open-uri もダメ。

 ^o^ >echo %HTTP_PROXY%
 proxy:8080
 
 ^o^ >type get_diary.rb
 require 'open-uri'
 
 puts open("http://d.hatena.ne.jp/takatoh/"){|f| f.read }
 
 ^o^ >ruby get_diary.rb
 C:/usr/ruby/lib/ruby/1.8/open-uri.rb:203:in `open_http': Non-HTTP proxy URI: pro
 xy:8080 (RuntimeError)
         from C:/usr/ruby/lib/ruby/1.8/open-uri.rb:626:in `buffer_open'
         from C:/usr/ruby/lib/ruby/1.8/open-uri.rb:164:in `open_loop'
         from C:/usr/ruby/lib/ruby/1.8/open-uri.rb:162:in `catch'
         from C:/usr/ruby/lib/ruby/1.8/open-uri.rb:162:in `open_loop'
         from C:/usr/ruby/lib/ruby/1.8/open-uri.rb:132:in `open_uri'
         from C:/usr/ruby/lib/ruby/1.8/open-uri.rb:528:in `open'
         from C:/usr/ruby/lib/ruby/1.8/open-uri.rb:30:in `open'
         from get_diary.rb:3

どちらも HTTP_PROXY=http://proxy:8080/ なら問題なく使える。

環境変数 HTTP_PROXY」でググってみたけど,"http://" を含めてるのと含めてないのと両方あるな。いったいどうしろっていうんだ。


せっかく簡潔になった Pragger の puglis::hatena_graph.rb だけど結局メソッドを再定義して対処した。"http://" がついてたら取り除く。

 ## Post a data to Hatena Graph
 ## 
 ## require gem `hatenaapigraph' 0.1.1 or later.
 ## 
 ## - module: publish::hatena_graph
 ##   config:
 ##     user_id: your-hatena-user-id
 ##     password: your-password
 ##     graph_name: the-name-of-graph
 
 begin
   require 'rubygems'
 rescue LoadError
 end
 require 'hatena/api/graph'
 
 module Hatena::API
   class Graph
     private 
     def http_post(url, params, headers)
       req = ::Net::HTTP::Post.new(url.path, headers)
       req.form_data = params
       req.basic_auth url.user, url.password if url.user
       proxy_host, proxy_port = (ENV['HTTP_PROXY'] || '').sub(/^http:\/\//, '').split (/:/)
       ::Net::HTTP::Proxy(proxy_host, proxy_port.to_i).start(url.host, url.port) {|ht tp|
         http.request(req)
       }
     end
   end
 end
 
 
 def hatena_graph(config, data)
   value = data.first.to_f
   graph = Hatena::API::Graph.new(config['user_id'], config['password'])
   graph.post(config['graph_name'], Time.now, value)
 end