先日リリースされたRuby2.6で標準ライブラリに取り入れられたBundlerですが、2019年1月3日にv2.0.0がリリースされました。
v1.17からの変更点は上記リンクに書かれているとおりですが、日本語での情報が見当たらなかったので、ここで紹介しておきます。
Ruby 2.3以上、RubyGems 2.5以上が必須に
Ruby 2.2系のサポートは2018年3月で終了しました。それに伴って新しいBundlerでもサポートされません。
Bundler 2.0.0ではRubyGems 3.0以上が必須とされていましたが、インストール時に問題が多発したようで、翌日にリリースされた2.0.1でRubyGems 2.5に戻されました。
Githubからのインストール時にhttpsがデフォルトに
gem 'rails', github: 'rails/rails'
上記のように書いたとき、今まではgit://github.com/rails/rails.git
からダウンロードしていましたが、gitプロトコルはセキュリティ上の理由から非推奨でした。
Bundler 1.17まではbundle config github.https true
とするか、
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
をGemfileに書くことで、httpsでダウンロードできました(参考)。
Bundler 2ではhttpsがデフォルトになるため、こうした設定が必要なくなります。
エラーメッセージがSTDERR
に出力されるように
$ rm -f Gemfile*
$ bundle install
Could not locate Gemfile
$ bundle install > /dev/null
$ rm -f Gemfile*
$ bundle install
Could not locate Gemfile
$ bundle install > /dev/null
Could not locate Gemfile
2.0ではエラーメッセージが/dev/null
に消えていないのがわかります。
てか今までSTDOUT
だったんですか……
lockファイルによってv1とv2を自動で切り替え
Gemfile.lock
を開くと、最後の方にBUNDLED WITH
という項目があり、bundle install
したBundlerのバージョンが記載されています(参考)。
Bundler 1と2を両方インストールしている場合、Gemfile.lock
を見て適切なバージョンのBundlerを起動してくれるそうです。
さいごに
メジャーアップデートとは言っても、それほど大規模な変更はない印象です。
なお、Ruby 2.6.0に付属のBundlerは1.17.2です。最新バージョンを使いたい場合はgem update bundler
をしてください。