当前位置:  开发笔记 > 后端 > 正文

来自cgi.rb的Ruby错误"类Cookie的超类不匹配"

如何解决《来自cgi.rb的Ruby错误"类Cookie的超类不匹配"》经验,为你挑选了1个好方法。

我刚刚将我的gentoo服务器上的ruby安装更新为ruby 1.8.6 patchlevel 287,并开始在我的一个eRuby应用程序上出错.apache error_log文件中给出的错误是:

[error] mod_ruby: /usr/lib/ruby/1.8/cgi.rb:774: superclass mismatch for class Cookie (TypeError)

奇怪的是它似乎有时会起作用 - 但有时候我会得到那个错误.任何想法?



1> Pistos..:

正如错误消息所示,在代码中某处有一个Cookie类的开头,该类使用与先前定义或打开Cookie类中使用的超类不同的超类.

即使是未明确指定超类的类定义仍然具有超类:

class Cookie
end

这将使用Object的超类定义Cookie类.

我以前遇到过这个错误,当你有一些代码尝试重新打开一个没有指定超类的类时会发生这种错误,并且程序员的假设是类(在这种情况下,Cookie)已经定义了,并且他只是重新打开它来添加一些功能.但是如果重新打开和定义的顺序相反,那么您将得到该错误,因为该类已经被定义为Object的子类,但是尝试使用不同的超类重新定义或重新打开.在irb中尝试这个:

% irb
irb(main):001:0> class C < String; end
=> nil
irb(main):002:0> class C; end
=> nil
irb(main):003:0> exit
% irb
irb(main):001:0> class C; end
=> nil
irb(main):002:0> class C < String; end
TypeError: superclass mismatch for class C
        from (irb):2

因此,您可能只需要grep查找Cookie类的定义,并尝试确保文件始终按正确的顺序排列.这可能是也可能不容易.:)

推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有