38
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Bundler 2.0の変更点

Last updated at Posted at 2019-01-07

先日リリースされた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がデフォルトに

Gemfile
gem 'rails', github: 'rails/rails'

上記のように書いたとき、今まではgit://github.com/rails/rails.gitからダウンロードしていましたが、gitプロトコルはセキュリティ上の理由から非推奨でした。
Bundler 1.17まではbundle config github.https trueとするか、

Gemfile
git_source(:github) { |repo| "https://github.com/#{repo}.git" }

をGemfileに書くことで、httpsでダウンロードできました(参考)。

Bundler 2ではhttpsがデフォルトになるため、こうした設定が必要なくなります。

エラーメッセージがSTDERRに出力されるように

v1.17.2
$ rm -f Gemfile*
$ bundle install
Could not locate Gemfile
$ bundle install > /dev/null
v2.0.1
$ 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をしてください。

38
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
38
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?