鳩舎

レースしない

Gemnasiumに頼らずにGemのバージョン指定が古くなっていることを検知する

世の中には便利なWebサービスがたくさんあります。僕個人の意見で便利なものだと、Gemnasiumです。

これはGithubに上がっているプロジェクトのGemfileやgemspecを見て、依存関係にあるGemのバージョンをチェックしてくれるいいやつです。その上もしGemfileで指定されているものが最新版より古いとメールで通知してくれます。

ただこれを利用すると、publicリポジトリはフリーなのですが、プライベートは月$3、グループのリポジトリは月$9かかってしまいます。家賃払ったら口座にほとんどお金がない僕には大打撃です。

なのでプライベートなものなどはローカルで検知できるようにします。具体的には

$ bundle outdated

で検知します。

bundle outdatedを実行すると指定のGem Sourceにバージョン情報を取りに行き、現在の最新バージョンがいくつで、どれがそうでないのかをリストアップしてくれます。

あとはこれをJenkinsなりなんなり、定期的に実行するものに組み込んで、バージョン情報が古くなっているリポジトリを発見したらメールで飛ばすような仕組みをいれれば万事解決です。

まめ知識

bundler 1.0系よりbundler 1.1系の方がGem Sourceのfetchが断然早く、bundle installの速度が段違いになります。また、

gem "http://rubygems.org"

と指定するより

gem :rubygems

と指定する方が断然速いので、そのへんも見直しましょう。