Ruby on Rails 错误:类 StringIO 的超类不匹配(TypeError)

Pap*_*roo 16 ruby ruby-on-rails

我在创建 ruby​​ on Rails 项目时遇到错误。rails new club在命令中,我通过键入,然后键入 来创建一个新项目bundle。现在,当我尝试通过键入并输入 创建模型和控制器时rails g resource Club name,我收到此错误:superclass mismatch for class StringIO (TypeError)

gems/bootsnap-1.9.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:
in `require': superclass mismatch for class StringIO (TypeError)
Run Code Online (Sandbox Code Playgroud)

我什至没有名为 的类StringIO,所以我不确定它来自哪里。

  • 红宝石版本:2.6.8
  • 导轨:6.1.4.1

小智 19

尝试恢复到 StringIO 的早期版本

gem install stringio -v 0.1.4

gem uninstall stringio # remove 3.0.0 and 3.0.1
Run Code Online (Sandbox Code Playgroud)

  • 即使没有安装特定版本,我也可以通过简单地运行“gem uninstall stringio”来删除所有非默认版本来解决此问题。 (11认同)
  • 不添加的去除也对我有用 (3认同)

New*_*ria 9

正如其他人在 @jason-lee 回答中所说,对于很多人来说,只需卸载现有的stringio然后再次运行即可解决此问题bundle install

    gem uninstall stringio
    bundle
Run Code Online (Sandbox Code Playgroud)


cod*_*ire 6

上述答案都不适合我。对我来说发生的事情是我添加gem 'rubocop', '~> 0.67.2', require: falseGemfile运行了bundle install

这个版本rubocop似乎已psych作为依赖项安装,然后psych依赖于stringio我,如果我错了,请纠正我,这一定与stringio正在使用的任何版本发生冲突bootsnap

不管怎样,为了解决这个问题,我只是删除了rubocop我添加的行Gemfile并添加了gem 'rubocop', require: false(安装了最新的 rubocop 版本),然后bundle install再次运行。


小智 3

更新宝石后我开始收到此错误。我尝试卸载 ruby​​ 和所有 gem,更新 rvm,但对我来说,解决方案似乎是更新 ruby​​gems。

gem update --system
Run Code Online (Sandbox Code Playgroud)