Gemnasium でプロジェクトで使用している gem の更新情報を把握する
Gem の更新情報を知る方法
以前、プロジェクトで使用している Gem の更新情報を知る方法について、Rubygems.org の Dashboard を使って知る という記事を書きました。 最近、Gemnasium という life-changing な Web サービスと出会ったので紹介したいと思います。
Gemnasium とは
Gemnasium https://gemnasium.com
Rubygems.org の Dashboard をスーパーウルトラクールにしたような Web サービスです。 簡単に言うと、以下の機能があります。
- GitHub リポジトリのプロジェクトで使用している Gemfile などを Gemnasium がチェック
- 使用している Gem の新しいバージョンがリリースされると、Gemnasium 上やメールで教えてくれる
- プロジェクトごとに使用している Gem のバージョン情報やステータスを一覧することができる
- Gem ごとにその Gem を使用しているプロジェクトを一覧することができる
また、使用者の多い Gem については、「そのバージョンの Gem は正しく動作するのか」、「重要な変更は無いか」、「セキュリティの脆弱性が発見されていないか」などを表示してくれます。
GitHub でホスティングされていないプロジェクトでも、コマンドラインツールを使用して Gemfile の変更情報を送信することができます。
チェックするファイルについて
FAQ によると、リポジトリに含まれている以下のファイルをチェックするようです。
- Gemfile.lock
- Gemfile
*.gemspec
3 種類の色について
これから紹介していくスクリーンショットには、信号機のように 3 種類の色がついている項目があります。 これは、簡単に説明すると、以下の状態を表しています。
- 緑: リリースされている最新のバージョンを使用している
- 黄: 現在のバージョンより新しいバージョンがリリースされている
- 赤: 脆弱性への対応や重要なアップデートがリリースされている
Gemnasium を見てみる
Gemnasium の主要なページをささっと紹介してみたいと思います。 まずは Dashboard。プロジェクトや Gem のステータスがとてもシンプルに表示されています。 ページの右側には最新の更新情報が表示されています。
次は、プロジェクトや Gem の一覧。 それぞれがどのようなステータスが一目で分かるようになっています。
プロジェクトのページに行くと、使用している Gem のバージョンやステータスが表示されます。 また、使用している Gem の中に、緊急性の高いアップデートがあると目立つように表示してくれます。
Gem のページに行くと、依存する Gem のバージョン情報を確認することができます。 ここでも、緊急性の高いアップデートがあると教えてくれます。
ページの右側には Gem の情報が表示されており、各バージョンの履歴を確認したり、プロジェクトのページなどに移動することができます。
ページ下部の「Who's using it?」の「My projects」タブで、その Gem を自分のどのプロジェクトで使用しているか、ステータスはどうかを確認することができます。 「Popular projects」タブでは、人気のあるプロジェクトは、どのバージョンを使用しているかを表示することができます。
簡単に紹介してきましたが、何はともあれ、実際のページを見てもらった方が分かりやすいと思います。 例えば GitLab 、GitHub のクローンですね。
gitlabhq/gitlabhq – Gemnasium https://gemnasium.com/gitlabhq/gitlabhq
メールで教えてくれる
こんな感じで、新しい Gem がリリースされるとメールで教えてくれるようです。
GitHub に push したら自動的にチェックするようにする
Gemnasium に登録すると、リポジトリに対して自動的に Service Hook が設定されるため、特に設定は必要ありません。また、リポジトリを Sync しても設定されるようです。 従って、push したら Gemnasium が自動でバージョンをチェックしてくれます。 (正直なところ、勝手に設定するのはどうなの... とは思いますが...)
バッジ
Travis CI には Build Status というバッジがありますが、Gemnasium には Dependency Status のバッジが用意されています。
試しに自分が作った jp_prefecture gem の README にバッジを設定してみました。依存する Gem が development dependency しかないのであまり意味はないのですが...
単体の gem のチェックは?
Gemfile に含まれないような単体の gem (コマンドラインツールなど)については教えてくれないようです。この辺は Rubygems を使うのが良いのでしょうか...?
もしくは、単体で使用する gem を Gemfile に列挙したリポジトリを作っておいて、それを Gemnasium にチェックしてもらう、とかでしょうか。
料金について
Gemnasium の PLANS AND PRICING に載っています。 FREE プランでは、プライベートリポジトリはチェックしてくれません。
一番安い BONZAÏ プランでは、$5/month で 10 個までのプライベートリポジトリをチェックすることができます。 そのひとつ上が OAK プランで、$10/month で 20 個までチェックしてくれます。
僕は BONZAÏ プランにしました。今のところは問題なさそうです。 お金を払う価値は十分あるんじゃないかなと個人的には思っています。
少し気になるところ
気になるところとしては、チェックを行うプライベートリポジトリを指定できないのでは?というところです。
例えば、BONZAÏ プランを使用した場合、プライベートリポジトリが上限の 10 個を超えた時に、チェックが不要なリポジトリがあったとしても OAK プランなどの上位プランを使用しないといけない気がします。
僕はプライベートリポジトリを Gemnasium の BONZAÏ プランの上限以上持っていないので、実際どうなるかは試せていません。 もし知っている方がいたら教えてください。
最後に
Gemnasium を知った瞬間、すごく嬉しかったのですが、同時に悲しくもなりました。なんで早く見つけなかったのだろう、と...。 Gem の更新情報についてはだいぶ幸せになれそうな気がします。
Web サービスには色々ありますが、Gemnasium のような、開発者による開発者のためのサービスもカッコいいですよね。 僕もこんなサービスを作りたいものです。