您必须将Bundler 2或更高版本与此lockfile一起使用

问题描述 投票:16回答:10

我正在使用heroku,每当我尝试推送我的应用程序时,此消息显示出来:

remote: Compressing source files... done.
remote: Building source:
remote: 
remote: -----> Ruby app detected
remote: 
remote:  !
remote:  !     You must use Bundler 2 or greater with this lockfile.
remote:  !
remote: /tmp/d20181109-104-g861yi/bundler-1.15.2/gems/bundler-1.15.2/lib/bundler/lockfile_parser.rb:108:in `warn_for_outdated_bundler_version': You must use Bundler 2 or greater with this lockfile. (Bundler::LockfileError)
remote:     from /tmp/d20181109-104-g861yi/bundler-1.15.2/gems/bundler-1.15.2/lib/bundler/lockfile_parser.rb:95:in `initialize'
remote:     from /app/tmp/buildpacks/b7af5642714be4eddaa5f35e2b4c36176b839b4abcd9bfe57ee71c358d71152b4fd2cf925c5b6e6816adee359c4f0f966b663a7f8649b0729509d510091abc07/lib/language_pack/helpers/bundler_wrapper.rb:130:in `new'
remote:     from /app/tmp/buildpacks/b7af5642714be4eddaa5f35e2b4c36176b839b4abcd9bfe57ee71c358d71152b4fd2cf925c5b6e6816adee359c4f0f966b663a7f8649b0729509d510091abc07/lib/language_pack/helpers/bundler_wrapper.rb:130:in `block in parse_gemfile_lock'
remote:     from /app/tmp/buildpacks/b7af5642714be4eddaa5f35e2b4c36176b839b4abcd9bfe57ee71c358d71152b4fd2cf925c5b6e6816adee359c4f0f966b663a7f8649b0729509d510091abc07/lib/language_pack/instrument.rb:18:in `block (2 levels) in instrument'
remote:     from /app/tmp/buildpacks/b7af5642714be4eddaa5f35e2b4c36176b839b4abcd9bfe57ee71c358d71152b4fd2cf925c5b6e6816adee359c4f0f966b663a7f8649b0729509d510091abc07/lib/language_pack/instrument.rb:40:in `yield_with_block_depth'
remote:     from /app/tmp/buildpacks/b7af5642714be4eddaa5f35e2b4c36176b839b4abcd9bfe57ee71c358d71152b4fd2cf925c5b6e6816adee359c4f0f966b663a7f8649b0729509d510091abc07/lib/language_pack/instrument.rb:17:in `block in instrument'
remote:     from /app/tmp/buildpacks/b7af5642714be4eddaa5f35e2b4c36176b839b4abcd9bfe57ee71c358d71152b4fd2cf925c5b6e6816adee359c4f0f966b663a7f8649b0729509d510091abc07/vendor/ruby/heroku-18/lib/ruby/2.5.0/benchmark.rb:308:in `realtime'
remote:     from /app/tmp/buildpacks/b7af5642714be4eddaa5f35e2b4c36176b839b4abcd9bfe57ee71c358d71152b4fd2cf925c5b6e6816adee359c4f0f966b663a7f8649b0729509d510091abc07/lib/language_pack/instrument.rb:16:in `instrument'
remote:     from /app/tmp/buildpacks/b7af5642714be4eddaa5f35e2b4c36176b839b4abcd9bfe57ee71c358d71152b4fd2cf925c5b6e6816adee359c4f0f966b663a7f8649b0729509d510091abc07/lib/language_pack/helpers/bundler_wrapper.rb:86:in `instrument'
remote:  !     Push rejected, failed to compile Ruby app.
remote: 
remote:  !     Push failed
remote: Verifying deploy...
remote: 
remote: !   Push rejected to my-proyect-1234.
remote: 

它说'远程:!您必须使用此锁定文件使用Bundler 2或更高版本。

但我的Bundler版本是2.0.0.pre.1

不知道该怎么做,我尝试卸载捆绑并再次安装它,我错了Gemfile.lock并再次输入bundle

ruby-on-rails heroku ruby-on-rails-5 heroku-cli
10个回答
28
投票

派对有点晚了,但我今天也遇到了这个,这个解决方案避免了卸载Bundler:只是运行

heroku buildpacks:set https://github.com/bundler/heroku-buildpack-bundler2

根据关于Bundler问题here的讨论。


9
投票

我在本地机器(开发)上遇到同样的问题 -

您必须将Bundler 2或更高版本与此lockfile一起使用。 问题出在gemfile.lock上,因为我的本地捆绑版本和项目捆绑版本不匹配!这是解决方案 -

  1. 我删除了gemfile.lock
  2. 运行命令 - bundle install 这解决了我的问题,很顺利!希望对别人有用!

3
投票

是的,所以一般卸载你的捆绑器版本,删除gemfile.lock,最后运行gem install bundler -v 1.15.2(这是heroku使用的版本)工作。

之后运行git push heroku master工作!


1
投票

我通过运行gem uninstall bundler删除2.0.0.pre.1解决了这个问题,重命名了Gemfile.lock文件(将其从使用中删除),然后运行bundle install重新安装gemfiles。在我的情况下,我已经访问了heroku安装的早期bundler版本(所以当我运行gem uninstall时,我看到所有版本都可用并选择删除2.0.0.pre.1)。


1
投票

Heroku不使用Bundler 2.0,而是使用1.15.2,正如tracelog暗示的那样。

据我所知,“解决方法”是创建自己的buildpack,或者自己创建简单的fork:

在编辑器中打开lib / language_pack / ruby​​.rb,并更改以下行:

BUNDLER_VERSION = "1.11.2"

(来自https://github.com/heroku/heroku-buildpack-ruby的README.md)

更新:从Ruby 2.6.1和Bundler 2.0.1开始,Heroku现在支持Bundler 2.0.1。 https://devcenter.heroku.com/articles/bundler-version#known-upgrade-issues

这不是Ruby 2.6.0的情况,因为这是从binstubs错误地调用的,正如@Schneems在评论中提到的那样。他善意地报道这是一个Ruby Bug #15622


0
投票

我删除了该项目并从Heroku应用程序中创建了一个git clone,不知道它是否是一个很好的解决方案,但它对我有用。


0
投票

我在本地系统中遇到了同样的问题,我的ruby版本很低,因为错误发生了。通过将其切换到ruby的更新版本来修复它。


0
投票

即使在系统上使用bundler 2,在使用Ruby 2.6部署应用程序时仍然会发生此错误,因为Ruby 2.6附带了默认版本的bundler。

如果您使用的是Ruby 2.6,请升级到Ruby 2.6.1以避免此问题。


0
投票

对于不使用Heroku的人:

我尝试了一切,但我仍然收到这个错误。即使这个链接也没有帮助我:https://github.com/jekyll/jekyll/issues/7463

所以这是我的解决方案:

在GitHub上推送您的代码。删除项目文件夹创建一个新文件夹并拉动你的代码包安装就是这样。捆绑更新--bundler最终没有帮助我,我没有使用它。

更重要的是:我更新了我的ruby版本,但是我收到了这个错误,因为我的RVM默认版本是旧版本。即使您使用rvm use VERSION_NUMBER -- default也无济于事,因为一旦您从终端注销,默认版本将更改为旧版本,您将遇到相同的问题。

为此你可以使用这个答案:How to set default Ruby version with RVM?

或者只是用rvm uninstall X.X.X卸载旧的ruby版本并使用rvm install X.X.X安装新版本并使其默认为rvm use --default X.X.X

干杯。

© www.soinside.com 2019 - 2024. All rights reserved.