昨日の続きでもある。
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