web-dev-qa-db-ja.com

HerokuがBundlerをインストールしてからエラーBundler 2.0.1をスローする

RailsアプリをHerokuにデプロイしようとしています。そこに何かをデプロイしてから久しぶりですが、ここで何が起こっているのか途方に暮れています。

これはかなり基本的なRails 5アプリケーションです。デプロイメントはGemfileをスムーズに通過し、その後、Bundler v 2.0.1をインストールするように要求するエラーで失敗します。ここにログの楽しいビットがあります。

remote:        Fetching devise 4.6.2
remote:        Installing sass-Rails 5.0.7
remote:        Installing devise 4.6.2
remote:        Bundle complete! 26 Gemfile dependencies, 78 gems now installed.
remote:        Gems in the groups development and test were not installed.
remote:        Bundled gems are installed into `./vendor/bundle`
remote:        Post-install message from i18n:
remote:        
remote:        HEADS UP! i18n 1.1 changed fallbacks to exclude default locale.
remote:        But that may break your application.
remote:        
remote:        Please check your Rails app for 'config.i18n.fallbacks = true'.
remote:        If you're using I18n (>= 1.1.0) and Rails (< 5.2.2), this should be
remote:        'config.i18n.fallbacks = [I18n.default_locale]'.
remote:        If not, fallbacks will be broken in your app by I18n 1.1.x.
remote:        
remote:        For more info see:
remote:        https://github.com/svenfuchs/i18n/releases/tag/v1.1.0
remote:        
remote:        Post-install message from sass:
remote:        
remote:        Ruby Sass has reached end-of-life and should no longer be used.
remote:        
remote:        * If you use Sass as a command-line tool, we recommend using Dart Sass, the new
remote:          primary implementation: https://sass-lang.com/install
remote:        
remote:        * If you use Sass as a plug-in for a Ruby web framework, we recommend using the
remote:          sassc gem: https://github.com/sass/sassc-Ruby#readme
remote:        
remote:        * For more details, please refer to the Sass blog:
remote:          https://sass-lang.com/blog/posts/7828841
remote:        
remote:        Removing bundler (2.0.1)
remote:        Bundle completed (47.21s)
remote:        Cleaning up the bundler cache.
remote: -----> Installing node-v10.14.1-linux-x64
remote:        Detected manifest file, assuming assets were compiled locally
remote: -----> Detecting Rails configuration
remote: -----> Detecting rake tasks
remote: 
remote:  !
remote:  !     Could not detect rake tasks
remote:  !     ensure you can run `$ bundle exec rake -P` against your app
remote:  !     and using the production group of your Gemfile.
remote:  !     Activating bundler (2.0.1) failed:
remote:  !     Could not find 'bundler' (2.0.1) required by your /tmp/build_94d6a4f5d4fbb862672998d5d06d2506/Gemfile.lock.
remote:  !     To update to the latest version installed on your system, run `bundle update --bundler`.
remote:  !     To install the missing version, run `gem install bundler:2.0.1`
remote:  !     Checked in 'GEM_PATH=/tmp/build_94d6a4f5d4fbb862672998d5d06d2506/vendor/bundle/Ruby/2.7.0', execute `gem env` for more information
remote:  !     
remote:  !     To install the version of bundler this project requires, run `gem install bundler -v '2.0.1'`
remote:  !
remote: /app/tmp/buildpacks/b7af5642714be4eddaa5f35e2b4c36176b839b4abcd9bfe57ee71c358d71152b4fd2cf925c5b6e6816adee359c4f0f966b663a7f8649b0729509d510091abc07/lib/language_pack/helpers/rake_runner.rb:106:in `load_rake_tasks!': Could not detect rake tasks (LanguagePack::Helpers::RakeRunner::CannotLoadRakefileError)
remote: ensure you can run `$ bundle exec rake -P` against your app
remote: and using the production group of your Gemfile.
remote: Activating bundler (2.0.1) failed:
remote: Could not find 'bundler' (2.0.1) required by your /tmp/build_94d6a4f5d4fbb862672998d5d06d2506/Gemfile.lock.
remote: To update to the latest version installed on your system, run `bundle update --bundler`.
remote: To install the missing version, run `gem install bundler:2.0.1`
remote: Checked in 'GEM_PATH=/tmp/build_94d6a4f5d4fbb862672998d5d06d2506/vendor/bundle/Ruby/2.7.0', execute `gem env` for more information
remote: 
remote: To install the version of bundler this project requires, run `gem install bundler -v '2.0.1'`

Herokuがデプロイメントを正常に実行しているように見え、その後、バンドラーを削除し、rakeタスクでエラーをスローし、バンドラーを再度要求するため、何が起こっているのか理解できません。私はすでにRails_ENV=production bundle exec rake assets:precompileを実行しており、最新の状態で表示されています。私はここで何かを見逃しているに違いない。うまくいけば、Herokuの最近の経験がある人が指摘できるといい。

編集bundle exec rake -Pコマンドも失敗せずに実行しました

17
PSCampbell

Ruby 2.6.3およびBundler 2.0.2にアップグレードして、Herokuでビルドを修正しました。

Herokuでの私たちのビルドは、ここ数日で同様のエラーメッセージで壊れ始めました:

Could not find 'bundler' (2.0.1) required by your ... Gemfile.lock.

ローカルビルドでRuby 2.6.1およびBundler 2.0.1が正常に機能していました。このコンボは、2日前までHerokuで正常に機能しました。

Herokuのドキュメントを調べていると、これに気づきました Dev Centerの記事 、2019年6月26日に更新されました。

Bundler 2.0.2 2.0.1の問題を参照してください。

多くの人々が、新しいバンドラーバージョンがリリースされたときにのみトリガーされる第4号をヒットしています。 Rubygemsのバグが原因で発生し、2.5.5以降または2.6.3以降にアップグレードすることで修正できます。

2.0.1の第4号は次のように述べています。

[エラーが発生する可能性があります] Rubygemsバンドルバージョンチェックコードのバグが原因です。この問題を回避するには、Rubyバージョンをアップグレードします。バージョン2.5.5以降と2.6.3以降で修正されています。アップデートしない場合、Rubyこの場合、Bundler 2.xの新しいリリースごとにこの問題が発生します。

Bundler 2.0.2 が2019年6月13日にリリースされ、Herokuが使用を開始したようです。

ログからRuby 2.7を使用しています。GemfileでRuby '2.6.3'を指定し、Bundler 2.0.2をインストールし、Gemfile.lockをバンドル/生成することをお勧めしますロックファイルの下部にこれが表示され、Herokuでアプリが正常にビルドされることを期待します。

Ruby VERSION
   Ruby 2.6.3p62

BUNDLED WITH
   2.0.2
22
tsamb

ほとんどの場合、これを修正するために実行する必要があるのは

gem install bundler -v 2.0.2
bundle update --bundler

Gemfile.lockで行った変更をコミットすると、次のHerokuプッシュは問題なく実行されます。

23
gk12345