Heroku安装Bundler然后抛出错误Bundler 2.0.1

PSC*_*ell 16 heroku bundler ruby-on-rails-5

我正在尝试将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'`
Run Code Online (Sandbox Code Playgroud)

我不明白发生了什么,因为Heroku似乎在整个部署过程中都运行良好,然后删除了捆绑程序,然后在rake任务上引发错误并再次请求捆绑程序。我已经表演过RAILS_ENV=production bundle exec rake assets:precompile,并且它是最新的。我必须在这里丢失一些东西,希望对Heroku有较新经验的人可以指出。

编辑 我也已经成功运行了bundle exec rake -P命令

tsa*_*amb 21

我通过升级到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文档时,我注意到了这篇开发中心文章,该文章已于2019年6月26日更新。它指出:

Bundler 2.0.2请参阅2.0.1的问题。

许多人都遇到了问题4,只有在发布新的Bundler版本时才会触发该问题。它的发生是由于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。我建议ruby '2.6.3'在您的Gemfile中指定,安装Bundler 2.0.2,并Gemfile.lock使用该组合捆绑/生成您的组合。然后,您应该在锁定文件的底部看到此内容,并希望您的应用程序可以在Heroku上成功构建:

RUBY VERSION
   ruby 2.6.3p62

BUNDLED WITH
   2.0.2
Run Code Online (Sandbox Code Playgroud)


小智 21

最有可能需要解决的问题是

gem install bundler -v 2.0.2
bundle update --bundler
Run Code Online (Sandbox Code Playgroud)

提交在您的Gemfile.lock中所做的更改,然后您的下一次Heroku推送将顺利进行。

  • 我更新时错过了运行第二个命令的操作-这样就解决了。谢谢! (2认同)
  • 这对我有用,应该是首先尝试的事情。 (2认同)