2014-06-05 11 views
8

Niedawno uaktualniłem aplikację Rails v3.x do Rails 4.1.1 i wszystko wyglądało na przeniesione w większości przypadków, ale jednak kiedy przełączam aplikację z produkcji na rozwój w konfiguracji apache plik, pojawia się komunikat o błędzie We're sorry but something went wrong Wiem, że środowisko programistyczne działa, ponieważ widzę, że żądanie GET jest przetwarzane w pliku development.log. Ale wkrótce po żądaniu GET otrzymuję następujący w dziennikuRuby on Rails - niekompatybilny format pliku marszałkowskiego

ActionView::Template::Error (incompatible marshal file format (can't be read) format version 4.8 required; 123.34 given):

+0

Najprawdopodobniej masz dane sesji z serializowanymi obiektami klas, które zmieniły się między wersjami. Spróbuj usunąć sesje. (Raport, w którym dokładnie pojawia się błąd, prawdopodobnie byłby przydatny). – Amadan

+0

Jak mam postąpić w "usuwaniu sesji"? – Chris

+1

Zależy od tego, do czego skonfigurowany jest 'session_store'. – Amadan

Odpowiedz

6

w moim przypadku, błąd ten spowodowany był mi grać z nowym cookies_serializer opcja w config\initializers\cookies_serializer.rb.

W opracowaniu ustawiłem go na :json (co oznaczało, że moje lokalne pliki cookie były serializowane jako json), ale potem całkowicie usunąłem opcję i wprowadziłem ją do produkcji. Jeśli następnie uruchomiłem serwer w trakcie rozwoju, moje pliki z serią plików json spowodowały ten sam błąd.

Więc jeśli kiedykolwiek biegać z cookies_serializer zestaw do :hybrid lub :json potem trzeba będzie przeprowadzić na prowadzeniu z (co najmniej) :hybrid.

+0

Masz rację. : hybryda jest drogą do rozwiązania tego problemu. – Francisco