gpt4 book ai didi

来自 cgi.rb 的 Ruby 错误 "Superclass mismatch for for class Cookie"

转载 作者:数据小太阳 更新时间:2023-10-29 07:23:31 26 4
gpt4 key购买 nike

我刚刚将我的 gentoo 服务器上的 ruby​​ 安装更新为 ruby​​ 1.8.6 补丁级别 287,并且我的一个 eRuby 应用程序开始出现错误。 apache error_log 文件中给出的错误是:

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

奇怪的是,它有时似乎有效 - 但其他时候我会收到该错误。有人有什么想法吗?

最佳答案

如错误消息所述,代码中某处打开了 Cookie 类,该代码使用的父类(super class)与先前定义或打开 Cookie 类时使用的父类(super class)不同。

即使没有显式指定父类(super class)的类定义仍然有一个父类(super class):

class Cookie
end

这用 Object 的父类(super class)定义了 Cookie 类。

我以前遇到过这个错误,当你有一些代码试图在没有指定父类(super class)的情况下重新打开一个类,而程序员的假设是这个类(在本例中是 Cookie)已经被定义时,它就会发生,并且他只是重新打开它以添加一些功能。但是如果重新打开和定义的顺序相反,您将收到该错误,因为该类已经被定义为 Object 的子类,但正试图用不同的父类(super class)重新定义或重新打开。在 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 类的定义,并尝试确保文件始终以正确的顺序被 require-d。这可能容易也可能不容易。 :)

关于来自 cgi.rb 的 Ruby 错误 "Superclass mismatch for for class Cookie",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/128502/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com