我在创建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
7条答案
按热度按时间gblwokeq1#
尝试恢复到StringIO的早期版本
7xzttuei2#
上面的答案对我都不起作用。我遇到的情况是,我将
gem 'rubocop', '~> 0.67.2', require: false
添加到Gemfile
,然后运行bundle install
。这个版本的
rubocop
似乎安装了psych
作为依赖项,然后psych
对stringio
有一个依赖项,如果我错了请纠正我,这一定与bootsnap
使用的任何stringio
版本冲突。无论如何,为了解决这个问题,我只是删除了我添加到
Gemfile
的rubocop
行,并添加了gem 'rubocop', require: false
(安装了最新的rubocop版本),然后再次运行bundle install
。z18hc3ub3#
我开始得到这个错误后,更新我的宝石。我试图卸载ruby和我所有的宝石,更新rvm,但对我来说,解决方案似乎是更新rubygems。
tag5nh1u4#
对我有用。
我的错误是:应用程序遇到以下错误:超类与类StringIO不匹配(TypeError)
问题是由这个问题https://www.redmine.org/issues/35435造成的
它可能会帮助你。我还删除了所有与#gem 'sdoc'相关的gem它的接缝像默认sdoc调用内部gem 'psych',这是gem使用的StringIO和两者都有不同的版本,你可以在你的GemFile中检查差异。锁定,看看你的2个版本之间的差异。
gev0vcfq5#
正如其他人在@jason-lee回答上所说的,对许多人来说,这可以通过卸载现有的
stringio
然后再次运行bundle install
来解决。yhuiod9q6#
当我将Ruby版本从2.7.6升级到3.0.4时,这个错误就消失了
ioekq8ef7#
Ubuntu上的RVM(与路径相关的问题):
退出所有终端
然后启动一个新的终端,然后: