首页 > 解决方案 > 尝试运行新的 bundle gem 时出现 Bundler 错误?未定义的方法“prefer_gems_rb?”

问题描述

所以,我跑去bundle gem cgscraper为我的项目自动构建目录。但是,当尝试在 CLI 中运行它时,我收到了这个错误:undefined methodprefer_gems_rb?'`。

完整输出:

~/code/projects/cgscraper on  master ✚
> ruby bin/console
/home/noly/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/rubygems_integration.rb:8: warning: already initialized constant Bundler::RubygemsIntegration::EXT_LOCK
/home/noly/.rbenv/versions/2.6.1/lib/ruby/2.6.0/bundler/rubygems_integration.rb:12: warning: previous definition of EXT_LOCK was here
/home/noly/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/version.rb:4: warning: already initialized constant Bundler::VERSION
/home/noly/.rbenv/versions/2.6.1/lib/ruby/2.6.0/bundler/version.rb:10: warning: previous definition of VERSION was here
/home/noly/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/constants.rb:4: warning: already initialized constant Bundler::WINDOWS
/home/noly/.rbenv/versions/2.6.1/lib/ruby/2.6.0/bundler/constants.rb:4: warning: previous definition of WINDOWS was here
/home/noly/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/constants.rb:5: warning: already initialized constant Bundler::FREEBSD
/home/noly/.rbenv/versions/2.6.1/lib/ruby/2.6.0/bundler/constants.rb:5: warning: previous definition of FREEBSD was here
/home/noly/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/constants.rb:6: warning: already initialized constant Bundler::NULL
/home/noly/.rbenv/versions/2.6.1/lib/ruby/2.6.0/bundler/constants.rb:6: warning: previous definition of NULL was here
/home/noly/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/current_ruby.rb:12: warning: already initialized constant Bundler::CurrentRuby::KNOWN_MINOR_VERSIONS
/home/noly/.rbenv/versions/2.6.1/lib/ruby/2.6.0/bundler/current_ruby.rb:12: warning: previous definition of KNOWN_MINOR_VERSIONS was here
/home/noly/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/current_ruby.rb:25: warning: already initialized constant Bundler::CurrentRuby::KNOWN_MAJOR_VERSIONS
/home/noly/.rbenv/versions/2.6.1/lib/ruby/2.6.0/bundler/current_ruby.rb:24: warning: previous definition of KNOWN_MAJOR_VERSIONS was here
/home/noly/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/current_ruby.rb:27: warning: already initialized constant Bundler::CurrentRuby::KNOWN_PLATFORMS
/home/noly/.rbenv/versions/2.6.1/lib/ruby/2.6.0/bundler/current_ruby.rb:26: warning: previous definition of KNOWN_PLATFORMS was here
Traceback (most recent call last):
    8: from bin/console:3:in `<main>'
    7: from /home/noly/.rbenv/versions/2.6.1/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
    6: from /home/noly/.rbenv/versions/2.6.1/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
    5: from /home/noly/.rbenv/versions/2.6.1/lib/ruby/2.6.0/bundler/setup.rb:10:in `<top (required)>'
    4: from /home/noly/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler.rb:143:in `setup'
    3: from /home/noly/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler.rb:195:in `definition'
    2: from /home/noly/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler.rb:434:in `default_gemfile'
    1: from /home/noly/.rbenv/versions/2.6.1/lib/ruby/2.6.0/bundler/shared_helpers.rb:33:in `default_gemfile'
/home/noly/.rbenv/versions/2.6.1/lib/ruby/2.6.0/bundler/shared_helpers.rb:250:in `find_gemfile': undefined method `prefer_gems_rb?' for #<Bundler::FeatureFlag:0x000055661bb27790> (NoMethodError)

有谁知道这是什么吗?我在 Google 上找不到任何关于它的信息,而且我在任何地方都看不到 prefer_gems_rb 方法。这只是bundle gem project我尝试运行的默认输出。

标签: rubyrubygemsbundler

解决方案


我有同样的问题。我的 ruby​​ 版本是 2.6.0。我将我的 ruby​​ 版本更新到 2.7.1 并重新安装了我所有的 gem。这解决了它。我希望这有帮助。


推荐阅读