如錯誤消息所示,在代碼中某處使用與先前定義或打開Cookie類中使用的不同超類時,會打開Cookie類。
即使沒有顯式指定超仍然是一個類定義有一個超:
class Cookie
end
這定義了對象的超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類的定義和嘗試,以確保文件總是被要求-d正確的順序。這可能也可能不容易。 :)