我的基本堆棧設置是Ubuntu 10.04 Lucid,Apache2和Rails 3.x(見下文)。它還使用在專用服務器上運行的MySQL數據庫,所以我只需要Rails服務器上的MySQL客戶端,並使用mysql2 gem。混合Ruby版本和MySql客戶端的問題
我正在升級Rails應用程序,從Rails 3.0到Rails 3.2,都進行得相當不錯(只需要更改一些代碼和一些重新組織資源),除了我需要從Ruby 1.8.7升級到更高版本版本的郵件寶石。
我想我會跳過Ruby 1.9.3,直接跳到Ruby 2.0.0。
我也在咬牙切齒,採用rvm來管理ruby環境,並且也更新到Passenger 4,因爲它表示這對rvm更好用,並且還因爲我有另一個我想要的Rails應用程序暫時留在Ruby 1.8.7上。
所有工作都進行得相當順利 - 在安裝過程中,一切安裝都沒有錯誤。
我在應用程序目錄層次結構的頂部添加了一個.ruby-version文件(指定爲2.0.0),這似乎很有效。
我也有.ruby-gemset在同一個目錄下,指定一個應用程序名稱,並且我已經使用bundle install安裝了必要的gem。
然而,當我重新啓動Apache,並嘗試訪問的Rails應用程序,我得到返回的網頁上乘客報告了一個錯誤,
Web application could not be started
/home/username/.rvm/gems/[email protected]/gems/mysql2-0.3.16/lib/mysql2/mysql2.so: [BUG] Segmentation fault ruby 1.8.7 (2010-01-10 patchlevel 249) [x86_64-linux]
看來,Rails應用程序(或乘客)是正確地獲取rvm環境,然後使用具有Ruby 1.8.7依賴項的不兼容版本的mysql2。
我試過很多事情要解決這個問題,
- 刪除並重新安裝mysql2寶石。
- 卸下和使用sudo重新安裝MySQL客戶端包apt-get安裝的libmysqlclient-dev的 的libmysql-紅寶石
- 嘗試相同的變化,但使用Ruby 1.9.3,而不是2.0.0。
理想情況下,我希望mysql2支持同時使用Ruby 1.8.7和2.0.0應用程序,但是我也想讓mysql2能夠與更高版本的Ruby一起工作。
建議感激。
您是否在應用程序的虛擬主機中設置了「PassengerRuby」,因爲它是在[rvm doc](https://rvm.io/integration/passenger)中編寫的? – zergood