将 ruby​​ 更新到 2.7.1 后,rspec 测试抛出错误 `Bundler::GemfileError for status code 4 but Bundler::GemfileError 已经注册`

ea0*_*723 7 rspec bundler ruby-on-rails-5.2 ruby-2.7

  • 使用 Rails 5.2.4.3
  • Mac OSX Catalina 10.15.6

将 ruby​​ 更新到 2.7.1(通过 rvm)后,运行rspec spec并收到错误:

Trying to register Bundler::GemfileError for status code 4 but Bundler::GemfileError is already registered
    # /Users/----/.rvm/gems/ruby-2.7.1@xmx/gems/bundler-2.1.4/lib/bundler.rb:7:in `require_relative'
    # /Users/----/.rvm/gems/ruby-2.7.1@xmx/gems/bundler-2.1.4/lib/bundler.rb:7:in `<top (required)>'
    # ./config/boot.rb:4:in `require'
    # ./config/boot.rb:4:in `<top (required)>'
    # ./config/application.rb:1:in `require'
    # ./config/application.rb:1:in `<top (required)>'
    # ./config/environment.rb:2:in `require_relative'
    # ./config/environment.rb:2:in `<top (required)>'
    # ./spec/spec_helper.rb:18:in `require'
    # ./spec/spec_helper.rb:18:in `<top (required)>'
    # ./spec/models/activation_spec.rb:1:in `require'
    # ./spec/models/activation_spec.rb:1:in `<top (required)>
Run Code Online (Sandbox Code Playgroud)
  • 切换到全局 gemset 解决了该问题,但使用默认 gemset 继续引发错误。
  • 卸载并重新安装 bundler 没有解决问题(确保 bundler v 2.1.4)
  • 我可以通过使用运行bundle exec rspec spec(但想真正解决问题)

ea0*_*723 6

我发现的很多关于这个错误的讨论都很老了。然后,终于偶然发现了这个最近的 github 讨论:

运行以下解决了我的问题:

gem update --system 3.0.8 && gem update --system

注意:在不安装文档的情况下运行更新

gem update --system 3.0.8 --no-document && gem update --system --no-document