このアナウンスがあったので、調べてツイートした。ブログにも貼っておく。
Gemfile.lock の `BUNDLED WITH` には問題があるから、Heroku では bundler version の決定(v1 or v2)に使った後、`BUNDLED WITH` は削除してからデプロイするよとのこと。 / “Ruby apps will now have the `BUNDLED WITH` declaration in their `Gemfile.lock` removed…” https://t.co/TYWg2dSpiK
— マスタカ (@masutaka) December 17, 2019
アナウンスの内容要約
Gemfile.lock の ‘BUNDLED WITH’ には問題があるから、Heroku では bundler version の決定(v1 or v2)に使った後、‘BUNDLED WITH’ は削除してからデプロイするよとのこと。
Heroku というより heroku-buildpack-ruby の話ね。
heroku-buildpack-ruby の処理
LanguagePack::Ruby#install_bundler_in_app から呼ばれるここで bundler v1 か v2 かを判別。
https://github.com/heroku/heroku-buildpack-ruby/blob/v207/lib/language_pack/helpers/bundler_wrapper.rb#L183-L192
下の LanguagePack::Helpers::BundlerWrapper#detect_bundler_version_and_dir_name! で、v1 なら 1.17.3、v2 なら v2.0.2 だと決定していた。
https://github.com/heroku/heroku-buildpack-ruby/blob/v207/lib/language_pack/helpers/bundler_wrapper.rb#L194-L204
その後の LanguagePack::Ruby#build_bundler で ‘BUNDLED WITH’ ブロックをゴリッと削除。
https://github.com/heroku/heroku-buildpack-ruby/blob/v207/lib/language_pack/ruby.rb#L788-L790