2011-09-29 55 views
0

我已經遍尋搜索,無法找到任何有同樣問題的人。如何從Ruby 1.8.7升級到Ruby 1.9.2 for Rails 2.3.8應用程序?

我測試升級使用RVM和nginx的+乘客(在生產環節上1.8.7當前正在運行)上運行的Rails 2.3.8與1.9.2紅寶石大Rails應用程序。

我使用mysql2寶石,和我的數據庫使用UTF-8編碼。 當我登錄到應用程序(標準restful-auth)時,數據庫查找找到匹配,但是當控制器嘗試保存User模型上的屬性更改時,它會從validates_length_of引發驗證錯誤。

我加了一些調試輸出到ActiveRecord的,它看起來像它認爲我所有的數據庫記錄的字符串值是空的(顯示爲「[]」在日誌中...)

我看到相同的行爲在腳本/控制檯中:User.first.login =>「[]」,但在切換到mysql2 gem(並更新database.yml適配器值)後被修復。

爲什麼會在控制檯工作,但不是通過網站? ActionController/ActiveSupport的bug?

澄清:這是一個穩定的應用程序,已經住了1年以上在1.8.7與數百規格的。

+0

檢查日誌時表單提交完成後,看看事情是正確傳遞。如果您看到控制檯中的值出現,但在將散列傳遞給它時嘗試保存記錄時發生錯誤,那很可能是問題所在。 – agmcleod

+0

這是一個成熟的測試過的應用程序,所以我不敢輕易解決這個問題。這個問題對於使用Ruby> = 1.9是獨一無二的,因爲代碼庫中幾乎所有的東西都沒有改變。 – simianarmy

+0

什麼是你的生產環境? – Bohdan

回答

0

的解決方案是禁止xss_terminate插件。

這是舊的,但對我來說,處理各種用戶輸入類型和角色是非常有用的。 明顯掛鉤方式來關閉處理字符串的ActiveRecord操作,以便在Ruby 1.9中有用。

相關問題