我正在使用 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 或更高版本。
But my Bundler version is 2.0.0.pre.1
不知道该怎么办,我尝试卸载 bundle 并重新安装,我删除了 Gemfile.lock 并输入
bundle
再次
最佳答案
我有过类似的经历。
这是我解决它的方法
显示 bundler gem 的所有本地 gem 列表
gem list bundler
备注 : 上面的命令是针对rbenv版本管理器的,rvm的可能会有所不同这将显示本地安装的 bundler gem 的版本
bundler (2.1.4, default: 1.17.2)
备注 :您的版本可能与此处的版本不同如果您没有在本地安装 bundler 版本 2,则运行
gem install bundler
或gem install bundler -v 2.1.4
备注 : 替换 2.1.4
使用您要安装的版本如果您已经在本地安装了 bundler version 2,或者刚刚安装了它,那么您只需在本地安装 RubyGems Package Manager 的更新。为此,请运行
gem update --system
然后最后运行bundle update --bundler
对于 Ruby on Rails 中的 Docker 项目 如果您在尝试使用 Docker 构建应用程序时遇到此问题,只需执行以下操作:
Gemfile.lock
文件bundle install
再次创建它.docker build
或 docker-compose build
适当的命令来构建您的项目。这将重新创建
Gemfile.lock
文件并在 Gemfile.lock
中设置您的项目所需的适当版本的捆绑器文件。备注 :作为旁注,您也可以将此环境变量添加到您的
Dockerfile
定义了 Bundler 版本。ENV BUNDLER_VERSION=2.1.4
仅此而已。我希望这会有所帮助。
关于ruby-on-rails - bundler : You must use Bundler 2 or greater with this lockfile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53231667/