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



创建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)

我甚至没有一个名为StringIO的类,所以我不确定它是从哪里来的。

  • ruby版本:2.6.8
  • 轨道:6.1.4.1

尝试恢复到StringIO 的早期版本

gem install stringio -v 0.1.4
gem uninstall stringio # remove 3.0.0 and 3.0.1

正如其他人在@jason lee answer上所说,对于许多人来说,只需卸载现有的stringio,然后再次运行bundle install就可以解决这个问题。

gem uninstall stringio
bundle

上面的答案对我都不起作用。对我来说,发生的事情是我将gem 'rubocop', '~> 0.67.2', require: false添加到Gemfile并运行bundle install

这个版本的rubocop似乎安装了psych作为依赖项,然后psychstringio和我有依赖项,如果我错了,请纠正我,这一定与bootsnap使用的stringio版本相冲突。

无论如何,为了解决这个问题,我只是删除了添加到Gemfilerubocop行,并添加了gem 'rubocop', require: false(安装了最新的rubocop版本(,然后再次运行bundle install

我在更新gem后开始出现这个错误。我试着卸载ruby和我所有的gems,更新rvm,但对我来说,解决方案似乎是更新rubygems。

gem update --system

它对我有效。

我的错误是:应用程序遇到以下错误:类StringIO(TypeError(的超类不匹配

问题是由此问题引起的https://www.redmine.org/issues/35435

它可能会对你有所帮助。我还删除了所有与#gem'sdoc'相关的宝石它与默认情况下sdoc内部调用gem"psych"类似,即gem使用StringIO,并且两者都有不同的版本。您可以在GemFile.Lock中检查差异,以查看两个版本之间的差异。

当我将Ruby版本从2.7.6 提升到3.0.4时,错误就消失了

Ubuntu上的RVM(路径相关问题(:

退出所有终端

exit

然后启动一个新的终端,然后:

rvm use [your version]
bundle install
rails c

最新更新