您必须在此lockfile中使用Bundler 2或更高版本

Ped*_*dro 25 ruby-on-rails heroku ruby-on-rails-5 heroku-cli

我正在使用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: 
Run Code Online (Sandbox Code Playgroud)

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

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

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

小智 29

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

heroku buildpacks:set https://github.com/bundler/heroku-buildpack-bundler2
Run Code Online (Sandbox Code Playgroud)

按照讨论的问题捆扎机这里.

  • 这个buildpack已被弃用,Heroku`heroku / ruby​​` buildpack现在直接支持bundler 2 (2认同)

Pro*_*ton 26

我也有类似的经历。

这是我解决的方法

显示捆绑器宝石的所有本地宝石的列表

gem list bundler
Run Code Online (Sandbox Code Playgroud)

N / B:上面的命令用于rbenv版本管理器,用于rvm的命令可能有所不同

这将显示本地安装的bundler gem的版本

bundler (2.0.2, default: 1.17.2)
Run Code Online (Sandbox Code Playgroud)

如果本地没有安装捆绑软件版本2,请运行

gem install bundler
Run Code Online (Sandbox Code Playgroud)

要么

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

如果您已经在本地安装或刚刚安装了捆绑软件版本2,则只需在本地安装RubyGems Package Manager的更新即可。为此,运行

gem update --system
Run Code Online (Sandbox Code Playgroud)

然后最后运行

bundle update --bundler
Run Code Online (Sandbox Code Playgroud)

就这样。

我希望这有帮助。

  • 完美的!谢谢你! (5认同)
  • 谢谢,这对我有用! (2认同)
  • `bundle update --bundler` 不是正确的命令,应该是 `gem install bundler`。 (2认同)

S.Y*_*dav 19

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

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

  1. 我删除了gemfile.lock
  2. 运行命令- bundle install
    解决了我的问题,很顺利!希望会为别人工作!

  • 这种方法的一个潜在问题是删除 Gemfile.lock 会导致所有版本状态丢失。Bundler 将为您的所有 gems 计算新版本,并且考虑到几乎每天都会有新版本的 gems,您将获得一棵依赖关系树,该依赖关系树与您测试并提交给 Gemfile.lock 的依赖关系树不同。那可能会破裂。 (5认同)

isp*_*ett 8

简单地gem update bundler为我做了。


小智 6

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


Ser*_*gey 5

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

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


Jit*_*hor 5

Ruby 2.6.0则不会出现这个问题。使用 bin 存根时会错误地调用默认版本的 Bundler。欲了解更多详情,请参阅以下链接

解决方案: Bundler 2 在系统上可用并且是最新版本,因此应该调用它而不是默认的捆绑程序版本。

更新 Rubygems

gem update --system
Run Code Online (Sandbox Code Playgroud)

更新捆绑程序

gem install bundler
Run Code Online (Sandbox Code Playgroud)

更新项目中的 Gemfile.lock

bundler update --bundler
Run Code Online (Sandbox Code Playgroud)


Ped*_*dro 0

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

\n