创建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
作为依赖项,然后psych
对stringio
和我有依赖项,如果我错了,请纠正我,这一定与bootsnap
使用的stringio
版本相冲突。
无论如何,为了解决这个问题,我只是删除了添加到Gemfile
的rubocop
行,并添加了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