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

6yt4nkrj  于 2022-11-04  发布在  Ruby
关注(0)|答案(7)|浏览(121)

我在创建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
gblwokeq

gblwokeq1#

尝试恢复到StringIO的早期版本

gem install stringio -v 0.1.4

gem uninstall stringio # remove 3.0.0 and 3.0.1
7xzttuei

7xzttuei2#

上面的答案对我都不起作用。我遇到的情况是,我将gem 'rubocop', '~> 0.67.2', require: false添加到Gemfile,然后运行bundle install
这个版本的rubocop似乎安装了psych作为依赖项,然后psychstringio有一个依赖项,如果我错了请纠正我,这一定与bootsnap使用的任何stringio版本冲突。
无论如何,为了解决这个问题,我只是删除了我添加到Gemfilerubocop行,并添加了gem 'rubocop', require: false(安装了最新的rubocop版本),然后再次运行bundle install

z18hc3ub

z18hc3ub3#

我开始得到这个错误后,更新我的宝石。我试图卸载ruby和我所有的宝石,更新rvm,但对我来说,解决方案似乎是更新rubygems。

gem update --system
tag5nh1u

tag5nh1u4#

对我有用。
我的错误是:应用程序遇到以下错误:超类与类StringIO不匹配(TypeError)
问题是由这个问题https://www.redmine.org/issues/35435造成的
它可能会帮助你。我还删除了所有与#gem 'sdoc'相关的gem它的接缝像默认sdoc调用内部gem 'psych',这是gem使用的StringIO和两者都有不同的版本,你可以在你的GemFile中检查差异。锁定,看看你的2个版本之间的差异。

gev0vcfq

gev0vcfq5#

正如其他人在@jason-lee回答上所说的,对许多人来说,这可以通过卸载现有的stringio然后再次运行bundle install来解决。

gem uninstall stringio
    bundle
yhuiod9q

yhuiod9q6#

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

ioekq8ef

ioekq8ef7#

Ubuntu上的RVM(与路径相关的问题):
退出所有终端

exit

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

rvm use [your version]
bundle install
rails c

相关问题