エラーメッセージに示されているように、コードのどこかに、以前の定義で使用されたものとは異なるスーパークラスを使用している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
したがって、Cookieクラスの定義をgrepして、ファイルが常に正しい順序でrequire-dされていることを確認する必要があります。これは簡単な場合とそうでない場合があります。:)