2014-06-05 66 views
8

我最近將Rails v3.x應用程序升級到了Rails 4.1.1,並且一切似乎都轉換了大部分,但是當我將應用程序從生產切換到apache配置時,文件,我收到錯誤消息We're sorry but something went wrong我知道開發環境正在工作,因爲我可以看到在development.log文件中正在處理GET請求。但不久GET請求後,我們得到如下的日誌Ruby on Rails - 不兼容的編組文件格式

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

+0

很有可能你有會話數據已經序列化了不同版本的類對象。嘗試刪除會話。 (關於錯誤出現的位置的報告可能會有用。) – Amadan

+0

我將如何處理「刪除會話」? – Chris

+1

取決於你的'session_store'配置爲什麼。 – Amadan

回答

6

在我的案例中,這個錯誤被我用在config\initializers\cookies_serializer.rbcookies_serializer選項打造成。

在開發中,我將它設置爲:json(這意味着我的本地cookie被序列化爲json),但是隨後我完全刪除了該選項並將其投入生產。如果我再次在開發中運行服務器,我的json序列化的cookie導致了相同的錯誤。

所以,如果你曾經與cookies_serializer集運行:hybrid:json,那麼你將需要進行與(至少):hybrid運行。

+0

雅正確。 :混合動力是解決這個問題的方法。 – Francisco