2012-04-05(木) [長年日記]
■ 過疎ったプロジェクトは誰かに引き継いで欲しいよね
社内の知らない人から「たださんはRubyにお詳しいとききまして」なんて質問の電話がかかってきたりしてなかなか楽しい職場ですがいかがお過ごしでしょうか。そんなおれの本業はプログラミングじゃなくてWebアクセス解析なので、(いまさら)Google AnalyticsのAPIを研究しようとしたのだった*1。
- まずgemを探す。「analytics」でひっかけても何も出てこず*2。
- APIドキュメントをみたらGDataを使っているとわかる。ああ、そりゃそうだ。
- もっぺんgemを探すとgdataを発見。
- gem install gdata
- ドキュメントを探して公式サイトにたどりつく。GitHubじゃないんだ!?
- (例によって)proxyに未対応でガックリくるが、わかりやすいコードだったのでサクっとパッチを当てる。
- proxy対応の実装方法が毎回違う件。
- さらにjcodeをrequireしようとしてruby 1.9で死ぬので、そのパッチも作る。
- そこで類似の1.9対応パッチが半年以上放置されているのを発見*3。
- さっき作ったパッチもいちおう登録してみるが、たぶん放置だろうなぁ。
- 気を取りなおしてGitHubを探してみると、生きたフォークを発見。やっぱりあったか。
- さっそくforkしてproxy対応とanalyticsクライアント追加をpull req (←いまここ)
で、このGitHub上のフォークがリリースしているgemの名前が【gdata_19】だったりするわけですよ。ひどい。言うまでもなく、gemの限られた名前空間を適切に融通しあえていないのがいかんわけだが。プロジェクトを投げ出す前に、どうして引き継ぎ先を見つけようとしないのかなぁ。
もしよろしければ http://rubygems.org/gems/autosel_http_proxy をお使いくださいー
ドキュメントだけ拝見しましたが、これは(proxyが切り替わるような)自分の環境を動的に設定変更するのに使うものであって、公開されているライブラリを任意のproxy対応にする用途には使えないのではないでしょうか?
2つの機能がまざってしまっているのですが、proxy対応でなくNet::HTTPを使うライブラリはすべからくhttp_proxy対応できます。。。ように設計したと思います。。。
Net::HTTP.instance_evalを使って、基底クラスを書き換えます。
http://gitorious.org/autosel_http_proxy/autosel_http_proxy/blobs/master/lib/autosel_http_proxy.rb
こちらにちょっとだけ日本語解説を書いたので参考になったらうれしいです。
http://d.masterq.net/?date=20100125#p01
ああ、そこはなんとなくわかったんですが、独自で専用の設定ファイルを用意しなければいけないという点で、一般に公開することが前提のライブラリに導入するにはハードルが高いですよね、と言いたかったのでした。私は汎用的に使えるパッチをアップストリームにフィードバックすることで、同じ問題に悩んでいるユーザにも恩恵があるようにしたいのです。
#適切なhttp_proxy環境変数を設定してくれるコマンドの方は面白いと思いました:-)