Bundler 2 での bundle コマンド非互換の影響

以前、ぎんざRuby会議01 での Bundler 2 のプレゼンで取り挙げたように bundle コマンドの挙動が Bundler 2 で変わる予定。

現在の Bundler 1.15 系と異なり、Bundler 2 での bundle コマンドは以下のようにコマンドの一覧表示になる。

% bundle
Bundler version 2.0.0.dev (2017-09-29 commit 5e9c40aa1)

Bundler commands:

  Primary commands:
    bundle install [OPTIONS]    # Install the current environment to the system
    bundle update [OPTIONS]     # Update the current environment
    bundle cache [OPTIONS]      # Locks and then caches all of the gems into vendor/cache
    bundle exec [OPTIONS]       # Run the command in context of the bundle
    bundle config NAME [VALUE]  # Retrieve or set a configuration value
    bundle help [COMMAND]       # Describe available commands or one specific command

(snip)

この変更がどういうことかというと、bundle gem で作った gem の README.md テンプレートに記されたインストール手順をそのまま README に使っている gem が問題になる (慣れた人であれば、インストールドキュメントを見ながら bundle コマンドを打つ人は少ないと思うが) 。端的にいうと bundle コマンドではインストールできなくなるので、bundle install に書き直す必要がある。bundle install であれば1系、2系両方に対応するので、それが正解だと思っている。

Bundler 2 は未だリリースされていないため、もう少し様子見をした方が良いかなと思っているけれど、この変更が実現したら OSS Gate ワークショップあたりで README どおりの手順で行なったけれどインストールできないといった PR が多数出るのかなとも予測していたりする。

bundle gem を利用する gem 職人向けには Bundler にパッチを出しておいたので、このパッチ以降は問題がそのはなくなるけれど、現在世にある gem でも相当数のインストール手順が bundle になっているものがあるので、振る舞いとしては良くなったと思う一方で、既存ドキュメントへの非互換として知っておいて良いと思う。

github.com