我正在使用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:!您必须对此捆绑文件使用Bundler 2或更高版本。'
但是我的Bundler版本是2.0.0.pre.1
不知道该怎么办,我尝试卸载捆绑软件并重新安装,我擦除了Gemfile.lock并再次输入bundle
答案 0 :(得分:28)
聚会晚了一点,但我今天也碰到了这个问题,这种解决方案避免了必须卸载Bundler:只需运行
heroku buildpacks:set https://github.com/bundler/heroku-buildpack-bundler2
根据关于Bundler问题here的讨论。
答案 1 :(得分:8)
我在本地计算机(开发)上遇到了同样的问题-
您必须将Bundler 2或更高版本与此锁定文件一起使用。
问题与 gemfile.lock 有关,因为我的本地捆绑软件版本和项目捆绑软件版本不匹配!
这是解决方案-
bundle install
答案 2 :(得分:3)
简单的gem update bundler
为我做到了。
答案 3 :(得分:3)
是的,所以通常卸载捆绑软件的版本,删除gemfile.lock ,最后运行gem install bundler -v 1.15.2
(heroku使用的版本)工作。
运行git push heroku master
之后就可以了!
答案 4 :(得分:2)
gem install bundler:2.0.0.pre.1
bundle _2.0.0.pre.1_ install
“ 2.0.0.pre.1”是您需要捆绑的任何版本。
为此{@ {3}},请不要删除您的Gemfile.lock。
答案 5 :(得分:1)
我通过运行gem uninstall bundler
来删除2.0.0.pre.1,重命名了Gemfile.lock文件(以将其从使用中删除),然后运行bundle install
重新安装了gemfile,解决了该问题。就我而言,我已经可以访问heroku安装的较早的捆绑软件版本(因此,当我运行gem uninstall
时,系统会显示所有可用版本,并选择删除2.0.0.pre.1)。
答案 6 :(得分:1)
使用捆绑程序2.0.1可以根据锁定文件的要求自动进行版本切换。在这方面,安装捆绑程序2.0.1对我有用。
安装捆绑程序2.0.1
gem install bundler -v 2.0.1
更新捆绑器
bundle update -bundler
答案 7 :(得分:1)
我对于Ruby 2.6.3遇到了同样的问题,答案中列出的内容都无济于事。 以下唯一的解决方案对我有用:
bundle update rails
删除Gemfile.lock
bundle
答案 8 :(得分:1)
我也有类似的经历。
这是我解决的方式
显示捆绑包宝石的所有本地宝石的列表
gem list bundler
N / B:以上命令用于rbenv版本管理器,用于rvm的命令可能不同
这将显示本地安装的bundler gem的版本
bundler (2.0.2, default: 1.17.2)
如果本地没有安装捆绑软件版本2,请运行
gem install bundler
OR
gem install bundler -v 2.0.2
如果已经在本地安装或刚刚安装了捆绑软件版本2,则只需在本地安装RubyGems的更新即可。为此,请运行
gem update --system
然后终于运行
bundler update --bundler
仅此而已
我希望这会有所帮助。
答案 9 :(得分:1)
Heroku不使用Bundler 2.0,而是使用1.15.2,这是跟踪日志所暗示的。
据我所知,“解决方法”是创建自己的buildpack,或者简单地分叉自己的buildpack:
在编辑器中打开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的情况,因为它不正确地从binstub中调用,就像@Schneems在评论中提到的那样。他已将其报告为Ruby Bug #15622
答案 10 :(得分:0)
对于不使用Heroku的人:
我尝试了所有操作,但仍收到此错误。甚至这个链接也没有帮助我:https://github.com/jekyll/jekyll/issues/7463
这就是我的解决方案:
将代码推送到GitHub上。 删除项目文件夹 创建一个新文件夹并提取您的代码 捆绑安装 而已。捆绑软件更新-捆绑软件最终并没有帮助我,我没有使用它。
另一件事:
我更新了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
设置为默认版本。
欢呼。
答案 11 :(得分:0)
即使系统上具有捆绑器2,由于Ruby 2.6附带了默认版本的捆绑器,因此在使用Ruby 2.6部署应用程序时仍然会发生此错误。
如果您使用的是Ruby 2.6,请升级到Ruby 2.6.1,以避免出现此问题。
答案 12 :(得分:0)
我在本地系统中遇到了同样的问题,由于发生错误,我的Ruby版本较低。通过将其切换到红宝石的更新版本进行了修复。
答案 13 :(得分:0)
我有同样的问题。在我的Gemfile.lock
中,我最终看到“与捆绑程序2.0.2捆绑在一起”,但是运行bundle --version
给了我version 1.17..
。对我来说,它可以解决,只需使用以下命令更新捆绑器:bundle update --bundler
see bundler documentation
答案 14 :(得分:0)
我删除了该项目,并从Heroku应用程序中创建了一个git clone,不知道这是否是一个好的解决方案,但它对我有用。
答案 15 :(得分:0)
如果您使用的是FROM:ruby:2.X.X
之类的docker映像,则可以执行以下操作:
FROM ruby:2.6.2
... # omitted
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
RUN gem uninstall bundler
RUN gem install bundler -v 2.1.4
RUN bundle update --bundler
RUN bundle install
... # omitted
答案 16 :(得分:0)
Ruby 2.6.0并非此问题。 使用bin存根时会错误地调用Bundler的默认版本。 有关更多详细信息,请参阅以下link
解决方案: Bundler 2在系统上可用,并且是最新版本,因此应调用它,而不是默认的捆绑程序版本。
更新Rubygems
gem update --system
更新捆绑器
gem install bundler
更新项目中的Gemfile.lock
bundler update --bundler
答案 17 :(得分:0)
我今天遇到了同样的问题。
就我而言,问题是由于使用 rvm gemset 引起的,而不是我使用的ruby 2.7.1和bundler 2.1.4(相同的捆绑Gemfile被锁定)。
因此,在执行此处列出的任何其他解决方案之前,只需看看您的 rvm环境即可。特别是如果您正在生产中运行项目。
黑客很开心!
答案 18 :(得分:0)
删除安装在 rails 应用程序中的 gem 历史记录和模块。
$ rm -rf vendor/bundle
$ rm Gemfile.lock
和,捆绑
$ bundle install --path=vendor/bundle
然后,启动 Rails 服务器
$ bundle exec rails s
然后,连接到浏览器。
http://localhost:3000/