zdogma's diary

徒然なるエンジニアな日々。

Bundler による BUNDLED WITH に対応する

Bundler とは?

言わずと知れた Gem のパッケージ管理ツールです。

bundler/bundler · GitHub

Gemfile に必要なパッケージについて記載し、 bundle install すれば必要なパッケージをすべてインストールしてくれます。

突然の BUNDLED WITH

たまたま訳あってローカルで gem update していたところ、突然 Gemfile.lock に下記のような内容が追記されるようになりました。

BUNDLED WITH
   1.10.3

どうやら Gemfile.lock の中で bundler 自体のバージョンも管理するようになったようです。

上記自体は bundler の 1.10.0.pre.2 からあったということですが、なかなか bundler 自体を update する機会がなく、今まで目に触れる機会がありませんでした。

今後メンバーが増える予定があったりして、チーム内で bundler のバージョンが 1.10.x を境に混在する可能性があったので、 今日足並みを揃えてローカルとサーバーの bundler をバージョンアップし、上記 Gemfile.lock の変更を commit しました。

上記の過程でいろいろと調べていたところ、Issue上でいろいろと議論がなされていましたが、 ちょうど10日前の commit のメッセージ部分に現状の方針が書いてありました。

  1. When running bundle install, Bundler will update the version in the lockfile if newer than the version present.
  2. Then, check in the lockfile change, exactly as you would after running install to change any other gem version.
  3. Older versions of Bundler will not change the number in the lock, but will warn the user that they are out of date.

github.com

今まで bundler 自体のバージョンについてあまり意識せずに開発してきたので、 ローカルとサーバーでバージョンが違ったり、というケースもままあったのですが、 本来的には使っているパッケージのバージョンは正しく管理すべきなのだから、 bundler 自体のバージョンもちゃんと管理しよう、ということなのでしょうね。

参考にしたページ