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週間の無料トライアルを提供しています。ぜひお試しください!