Gemfile.lockからバージョンの変更を取得する


こんなとき

  • 大きめのRails/ライブラリアップデートを控えている
  • アップデート時にテストを行いたいが, テストスートが不十分
  • アップデートにもテストにも十分な時間を割くことができない

できたこと

gemのアップデート(bundle updateとか)をした後にGenfile.lockのdiffからgemの変更差分を表示するスクリプトを作成しました. travelog
これを使ってアップデートされた各gemの変更差分を追いやすくします.
変更の入ったところには, バグなどの不具合が起こりやすいと思うのでテスト設計の際に参考にできると思います.

導入

$ gem install travelog
$ type travelog

使い方

railsのリポジトリを使って試してみます.

$ git clone https://github.com/rails/rails.git
$ cd rails
$ git diff b1edc37 HEAD -- Gemfile.lock | travelog

次のような出力が得られます.
バージョンに変更があった場合は, bundler形式で変更を出力し, 別途インストールのみされたgemとアンインストールされたgemを出力するようにしています

***** CHANGED GEM'S *****
globalid 0.3.6(was 0.3.3)
jquery-rails 4.0.5(was 4.0.3)
sprockets 4.0.0(was 2.12.3)
turbolinks 3.0.0(was 2.5.3)
amq-protocol 2.0.0(was 1.9.2)
~~省略~~

***** INSTALLED GEM'S *****
sass-rails 6.0.0
sass 3.4.19
byebug 8.2.0
celluloid-essentials 0.20.5
~~省略~~

***** UNINSTALLED GEM'S *****
hike 1.2.3
mail 2.6.3
mini_portile 0.6.2
queue_classic 3.1.0
rack 1.6.0
rack-protection 1.5.3
ruby-prof 0.11.3
sprockets-rails 2.2.4
tilt 1.4.1

参考

https://rubygems.org/gems/travelog
https://github.com/rentalname/travelog

感想

このgemを公開するモチベーションをくれたrubykaigiに感謝です.