Heroku 安装 Bundler 然后抛出错误 Bundler 2.0.1
Heroku installs Bundler then throws error Bundler 2.0.1
我正在尝试将 Rails 应用程序部署到 Heroku。我在那里部署任何东西已经有一段时间了,但我对这里发生的事情一头雾水。
这是一个相当基础的 Rails5 应用程序。部署顺利通过 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
命令也没有失败
我通过升级到 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,运行良好。直到几天前,这个组合在 Heroku 上也运行良好。
在搜索 Heroku 文档时,我注意到这个 Dev Center article,它于 2019 年 6 月 26 日更新。它指出:
Bundler 2.0.2
See issues for 2.0.1.
Many people are hitting issue 4 which is only triggered when a new Bundler version is released. It happens because of a bug in Rubygems, and can be fixed by upgrading to 2.5.5+ or 2.6.3+.
2.0.1 下的第 4 期指出:
[You may get an error] due to a bug in the Rubygems bundler version checking code. To avoid this issue, upgrade your Ruby version. It is fixed in 2.5.5+ and 2.6.3+. If you do not update, your Ruby version then every new release of Bundler 2.x will trigger this issue.
Bundler 2.0.2 于 2019 年 6 月 13 日发布,看起来 Heroku 已经开始使用它了。
我注意到您正在使用日志中的 Ruby 2.7。我建议在您的 Gemfile 中指定 ruby '2.6.3'
,安装 Bundler 2.0.2,并使用该组合 bundling/generating 您的 Gemfile.lock
。然后您应该在锁定文件的底部看到它,希望您的应用程序在 Heroku 上成功构建:
RUBY VERSION
ruby 2.6.3p62
BUNDLED WITH
2.0.2
很可能,您需要 运行 解决这个问题
gem install bundler -v 2.0.2
bundle update --bundler
提交它在您的 Gemfile.lock 中所做的更改,然后您的下一次 Heroku 推送将顺利通过。
我正在尝试将 Rails 应用程序部署到 Heroku。我在那里部署任何东西已经有一段时间了,但我对这里发生的事情一头雾水。
这是一个相当基础的 Rails5 应用程序。部署顺利通过 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
命令也没有失败
我通过升级到 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,运行良好。直到几天前,这个组合在 Heroku 上也运行良好。
在搜索 Heroku 文档时,我注意到这个 Dev Center article,它于 2019 年 6 月 26 日更新。它指出:
Bundler 2.0.2 See issues for 2.0.1.
Many people are hitting issue 4 which is only triggered when a new Bundler version is released. It happens because of a bug in Rubygems, and can be fixed by upgrading to 2.5.5+ or 2.6.3+.
2.0.1 下的第 4 期指出:
[You may get an error] due to a bug in the Rubygems bundler version checking code. To avoid this issue, upgrade your Ruby version. It is fixed in 2.5.5+ and 2.6.3+. If you do not update, your Ruby version then every new release of Bundler 2.x will trigger this issue.
Bundler 2.0.2 于 2019 年 6 月 13 日发布,看起来 Heroku 已经开始使用它了。
我注意到您正在使用日志中的 Ruby 2.7。我建议在您的 Gemfile 中指定 ruby '2.6.3'
,安装 Bundler 2.0.2,并使用该组合 bundling/generating 您的 Gemfile.lock
。然后您应该在锁定文件的底部看到它,希望您的应用程序在 Heroku 上成功构建:
RUBY VERSION
ruby 2.6.3p62
BUNDLED WITH
2.0.2
很可能,您需要 运行 解决这个问题
gem install bundler -v 2.0.2
bundle update --bundler
提交它在您的 Gemfile.lock 中所做的更改,然后您的下一次 Heroku 推送将顺利通过。