SideCI Blog

自動コードレビューサービスSideCIを提供している株式会社アクトキャットのコーポレートブログです。



bundlerのoutdatedコマンドを使ってGemfileの古いライブラリをチェックしましょう

RubyプロジェクトではBundlerを使って依存ライブラリの管理を行うのが一般的です。ライブラリのインストールは簡単にできますが、その後適切に最新バージョンを追いかけないとセキュリティ上のリスクが発生することや、アップデートの差分が大きくなりすぎてアップデートしたくでも難しくなりがちです。

bundle update を実行すればアップデートは可能ですが、予期せぬ動作になってしまう可能性は当然含んでおり、テストは不可欠です。そこで、アップデートする前にまず、そもそもアップデートする必要があるgemがあるかどうかを簡単に調べる bundler outdatedコマンド を使ってみましょう。

bundler outdatedの使い方

bundlerのoutdated` はbundler 1.1(2012年)以降で実装された機能です。そのためbundlerが使われている殆どのプロジェクトで、特に何もせずに利用できるはずです。

利用する際には任意のRubyプロジェクトの直下で( Gemfile があるディレクトリで) bundle outdated を実行するだけです。そうすると新しいバージョンがあるライブラリが一覧出力されます。

$ bundle outdated
Fetching gem metadata from https://rubygems.org/............
Fetching version metadata from https://rubygems.org/..
Resolving dependencies...

Outdated gems included in the bundle:
  * diff-lcs (newest 1.3, installed 1.2.5)
  * json (newest 2.1.0, installed 1.8.3)
    :
  * simplecov-html (newest 0.10.1, installed 0.10.0)

ここで出力されたgemを1つずつ差分を見ていくことで安全にgemをアップデートすることが出来ます。1つずつupdateしていっても良いですし、それがまどろっこしい場合はbundle updateを行ってしまって、テストで動作を確認するのでもよいかもしれません。

bundler outdatedのオプション

オプションは多数あります。例えば --minor をつけると新しいマイナーバージョンが出ているものだけ表示します。同様に --major--patch もあります。あまり大きなバージョンアップをすると動作が変わってしまうこともあるので、今使っているメジャーバージョンのマイナーバージョンアップがあるかどうかを調べたいと言った場合に使えます。なお、これらのオプションはbundle updateにも存在しています。

リモートをチェックしない場合は --local を指定します。逆にプレリリース版まで含めてチェックしたい場合は --pre を指定します。

development などグループを指定する場合には --group または --groups を使います。特定のグループ管理化にあるライブラリだけをチェックできます。


ライブラリのバージョンが古いと最新ドキュメントに載っている機能が使えなかったり、セキュリティリスクになることがあります。かといって無条件にアップデートしてしまうのも怖いでしょう。まずは bundlerのoutdatedコマンド を使って新しいバージョンがあるかチェックしてみましょう。updateコマンドと違って実際にインストールはされないので実行時間も短く済みます。

Gemのアップデートを見やすくするSaaSのGemnasiumというサービスもあります。まだ試したことがない方は試してみて頂ければと思います。https://gemnasium.com/

その他にも、エンジニアの開発効率を上げる、便利なSaaSが多く存在しています。コードレビューの自動化サービスとしてはSideCIがあります。。

SideCIでは2週間の無料トライアルを提供しています。ぜひお試しください!