新年早々Rubyのバージョン上げようとしたらRubyGemsとBundler2の組み合わせで問題にぶつかった

問題

which bundle できてるのに、bundlerの実体がないの?

$ which bundle
/hoge/ruby/bin/bundle
$ bundle
Traceback (most recent call last):
    2: from /hoge/ruby/bin/bundle:23:in `<main>'
    1: from /hoge/ruby-2.5.3/lib/ruby/2.5.0/rubygems.rb:308:in `activate_bin_path'
/hoge/ruby-2.5.3/lib/ruby/2.5.0/rubygems.rb:289:in `find_spec_for_exe': can't find gem bundler (>= 0.a) with executable bundle (Gem::GemNotFoundException)

結論

RubyGemsとBundler2のバージョンの組み合わせによって起こる問題のよう。

昨日、私はBundler 2.0をリリースしました。 そのうちの1つは、BundlerがRubyGems v3.0.0を必要とするように設定したことです。 リリース後、多くのユーザーが本当に新しいバージョンのRubyGemを必要とするBundler 2の問題に直面していることが明らかになりました。 私たちはユーザーからのフィードバックを注意深く聞いていて、RubyGemsの要件を最低でもv2.5.0に緩和することにしました。 この要件を調整する新しいBundlerバージョンv2.0.1をリリースしました。 これによって引き起こされた混乱についてユーザーに謝罪します。

(Google翻訳より)

bundler.io

stackoverflowにもあるように、 The real answer is here if you try to install bundler 2.0.1 or 2.0.0 due to Bundler requiring RubyGems v3.0.0 というのが原因。

stackoverflow.com

対応

gem install bundler -v '1.17.3'

これだけでよかった みなさんも気をつけましょう。よい2019年をお過ごしください

ちなみに

ありがたい記事ですね。 tmtms.hatenablog.com

Bundler Gem 標準添付は延期
Ruby 2.5 に入る予定だったのですが、2.5 リリースには間に合わなかったようです。

間に合っていたらこの件は起きてなさそうだった。2.6に期待。