gemを探す際の基準として、RubyGems.org のダウンロード数を見たりするので、
RubyGems.org API を使ってgemを作成してみました。
使い方
一応、rochefort/gem-search に記載しています。
検索時にダウンロード数を表示 + オプションでソート な感じです。
$ gem-search exif -s v NAME DL(ver) DL(all) -------------------------------------------------- -------- --------- mini_exiftool (1.6.0) 5264 183250 exifr (1.1.3) 2930 74929 extexif (1.0.1) 1014 1751 exiftoolr (0.0.7) 432 1265 multi_exiftool (0.2.0) 186 3065 gpx2exif (0.1.0) 67 1167
学んだこと
APIリクエストのstub化
標準出力のテストの書き方
2010-03-24 - pochi’s weblog
こちらを参考にしたのですが、wycats先輩が書いたとか。
(ちらっと探してみたけど、元のソースは分かんなかったです。)
なるほどという感じですが、一時的にStringIOにすげ替えています。
# http://d.hatena.ne.jp/POCHI_BLACK/20100324 # this method is written by wycats def capture(stream) begin stream = stream.to_s eval "$#{stream} = StringIO.new" yield result = eval("$#{stream}").string ensure eval("$#{stream} = #{stream.upcase}") end result end
余談
gemの名前の長さって最大でどれくらいあるのか調べてみると
# rubygemsのみ gem list -r | awk '{print length($1), $1}' | sort -rn | head 56 selenium-webdriver-rails-support-via-monkeypatch.gemspec 50 ActionMailer-Base-to-use-an-absolute-path-template 48 selenium-webdriver-rails-support-via-monkeypatch 48 mattscilipoti-capistrano_rsync_with_remote_cache 47 unclebilly-activerecord-oracle_enhanced-adapter 47 althor880-activerecord-activesalesforce-adapter 46 silent-e-activerecord-activesalesforce-adapter 45 georgedrummond-active_paypal_adaptive_payment 45 ctreatma-activerecord-oracle_enhanced-adapter 44 jramos-activerecord-activesalesforce-adapter # gems.github.com 込み $ awk '{print length($1), $1}' gemlist.txt | sort -rn | head 62 saberma-saberma-activerecord-oracle_enhanced-adapter-nvarchar2 56 selenium-webdriver-rails-support-via-monkeypatch.gemspec 54 saberma-activerecord-oracle_enhanced-adapter-nvarchar2 53 WatersOfOblivion-activeresourceinstanceauthentication 50 herestomwiththeweather-oscurrency-ruby-api-wrapper 50 ActionMailer-Base-to-use-an-absolute-path-template 49 oldmoe-activerecord-neverblock-postgresql-adapter 48 sportgenic-activerecord-activesalesforce-adapter 48 selenium-webdriver-rails-support-via-monkeypatch 48 mattscilipoti-capistrano_rsync_with_remote_cache
なっげー、バカだなぁ。
バージョン込みで50文字ぐらいでいけるかと思いましたがダメでした。