ruby - 尝试运行新的 bundle gem 时出现 Bundler 错误?未定义的方法“prefer_gems_rb?”
问题描述
所以,我跑去bundle gem cgscraper
为我的项目自动构建目录。但是,当尝试在 CLI 中运行它时,我收到了这个错误:undefined method
prefer_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
我尝试运行的默认输出。
解决方案
我有同样的问题。我的 ruby 版本是 2.6.0。我将我的 ruby 版本更新到 2.7.1 并重新安装了我所有的 gem。这解决了它。我希望这有帮助。
推荐阅读
- php - 如何从数组中删除新行之后的单词?
- c++ - openssl - 无法计算许多文件的哈希
- java - 如何从 ArrayList 填充 JComboBox
- python - Python - Tkinter 如何在按下按钮后关闭窗口?
- ios - UIView 中的 Xcode 错误预期声明
- azure - 如何在powershell中循环遍历2个数组?
- php - PHP 表单电子邮件 - 发送前等待 x 小时
- sass - 在 Vue.js 中使用 vue.config.js 修复 sass-loader 错误
- python - 从一个容器运行命令到另一个容器
- c++ - 如何防止 gcc 预处理 shebang 行?