Как говорится в сообщении об ошибке, где-то в коде есть открытие класса Cookie, в котором используется суперкласс, отличный от того, который использовался в предыдущем определении или открытии класса Cookie.
Даже определение класса, которое явно не указывает суперкласс, все еще имеет суперкласс:
class Cookie
end
Это определяет класс Cookie с суперклассом Object.
Я сталкивался с этой ошибкой раньше, и она возникнет, когда у вас будет какой-то код, пытающийся открыть класс без указания суперкласса, и программист предполагает, что класс (в данном случае, 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 и убедиться, что файлы всегда требуют-d в правильном порядке. Это может или не может быть легко. :)