Bundler:您必须使用Bundler 2或更高版本来处理此锁定文件。

129

我正在使用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: 

它说:“remote: ! You must use Bundler 2 or greater with this lockfile。”

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

不知道该怎么办,我尝试卸载bundle并重新安装它,我删除了Gemfile.lock并再次运行了bundle


3
如果您在 CI 环境中看到此消息,请设置 BUNDLER_VERSION 环境变量以匹配您的 Gemfile.lock 文件。export BUNDLER_VERSION='2.0' - DylanReile
21个回答

1
对于没有使用Heroku的人:
我尝试了一切,但仍然收到此错误。即使这个链接也没有帮助我:https://github.com/jekyll/jekyll/issues/7463 所以这是我的解决方案:
将您的代码推送到GitHub。 删除项目文件夹 创建一个新文件夹并拉取您的代码 bundle install 就这样。最后,bundler update --bundler 对我没有帮助,我没有使用它。
还有一件重要的事情: 我更新了我的ruby版本,但我仍然遇到了这个错误,因为我的RVM默认版本是旧版本。 即使您使用rvm use VERSION_NUMBER -- default也无济于事,因为一旦您从终端退出,默认版本就会更改为旧版本,您将遇到相同的问题。
为此,您可以使用此答案: 如何使用RVM设置默认Ruby版本? 或者只需使用rvm uninstall X.X.X卸载旧的Ruby版本,并使用rvm install X.X.X安装新的版本,并通过rvm use --default X.X.X将其设置为默认版本。

干杯。


1
我在Ruby 2.6.3上遇到了同样的问题,没有任何答案可以帮助我。唯一有效的解决方案是:
  1. bundle update rails

  2. 删除Gemfile.lock文件

  3. bundle


1
我遇到了同样的问题。在我的 Gemfile.lock 文件中,末尾显示 "bundled with bundler 2.0.2",但运行 bundle --version 命令时却显示版本号为 1.17..。对我来说,解决方法是使用以下命令更新我的 bundler: bundle update --bundler请参阅 bundler 文档

1
Heroku使用的不是Bundler 2.0,而是1.15.2,正如跟踪日志所示。
据我所知,“解决方法”是创建自己的构建包,或简单地分叉他们自己的构建包:
在编辑器中打开lib/language_pack/ruby.rb,并更改以下行:
BUNDLER_VERSION =“1.11.2”
(README.md位于https://github.com/heroku/heroku-buildpack-ruby
更新:自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

我们现在支持Bundler 2.0.1。另外,改变Bundler版本是没有任何作用的,您还必须构建和托管该版本的Bundler在我们的S3仓库中。 - Schneems
@Schneems更新了答案,并提到了Heroku开发中心和您在Ruby跟踪器中的错误!感谢您的更新;直到现在我才看到这个! - Frederik Spang

0

删除 Rails 应用中安装的 gem 历史记录和模块。

$ rm -rf vendor/bundle
$ rm Gemfile.lock

和,捆绑

$ bundle install --path=vendor/bundle

然后,启动Rails服务器

$ bundle exec rails s

并且,连接到浏览器。

http://localhost:3000/


0
使用 bundler 2.0.1 可以根据锁定文件要求自动切换版本。在这方面,安装 bundler 2.0.1 对我很有帮助。
安装 bundler 2.0.1
gem install bundler -v 2.0.1
更新 bundler
bundle update -bundler


0

我删除了项目,并从Heroku应用程序进行了git克隆,不知道这是否是一个好的解决方案,但对我来说起作用了。


0

同样的错误,但是在本地。 我终于发现我在命令行上使用了错误版本的ruby(我使用uru来管理ruby版本)。 毕竟,gemfile怎么可能使用并生成一个版本为2.1.4的锁定文件,而我的搜索却没有找到那个版本!

>gem list bundler

*** LOCAL GEMS ***

bundler (default: 1.16.2, 1.13.1)
capistrano-bundler (1.6.0, 1.1.4)

所以我切换到正确的 Ruby 版本,一切都很好。

记住,gem 包是与你的 Ruby 版本一起存储的!


0

我在本地系统中遇到了同样的问题,由于我的 Ruby 版本过低,因此出现了错误。通过切换到更新版本的 Ruby 来解决了这个问题。


0
今天我也遇到了同样的问题。
在我的情况下,问题是由于使用与Ruby 2.7.1和Bundler 2.1.4(与相同bundle Gemfile被锁定)不同的rvm gemset引起的。
因此,在执行此处列出的任何其他解决方案之前,请查看您的rvm环境。尤其是如果您正在生产环境中运行项目。
祝大家编程愉快!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接