2011-10-13 115 views
5

我正在使用Rails 1.2.3版本。現在我想升級Rails版本以及從1.8.6到1.9.7的ruy版本。將Rails App從1.2.3升級到3.1.0?

與這種較舊的版本一起工作,但它處於運行狀態是一個主要的痛苦。現在我想要Rails的高級功能,但不支持這個舊版本。

請建議我升級版本和ruby版本的方式。

謝謝....

+0

我不認爲有一個合理的一步法這一點。我建議使用指南升級到Rails 2,確保所有的測試都通過了(爲了以防萬一......也許在生產中給它幾天/周),然後按照從Rails 2到Rails 3的升級指南。 –

+0

@約旦:謝天謝地。但我沒有足夠的時間來跟蹤這一步。如果你有任何想法升級,請讓我知道。我會嘗試這種方法。 – Rubyist

+0

@Jordan:您是否有任何參考文檔可以將Rails 1升級到Rails 2版本。 ?如果你有,那麼請分享...謝謝 – Rubyist

回答

4

這是一個很大的飛躍。您最好的選擇是創建一個新的rails 3.1應用程序,然後手動遷移您的代碼。

gem install rails #=> will install the latest stable release from rubygems 
gem install bundler 
rails new myapp 

你需要做的第一件事就是打開Gemfile,並添加您使用的是當前應用程序的任何寶石,它也將是找到任何插件的寶石版本是個好主意你正在使用(在vendor/plugins)。另外,請確保您爲所使用的數據庫類型安裝了適當的Gem(mysql2,sqlite3pg)。

添加完所有需要的寶石後,運行bundle install將所有寶石與應用程序捆綁在一起。

至於視圖,模型和控制器,這些東西應該都可以複製到新應用程序中。你可能需要調整一些東西,但大部分這些東西都應該工作。

您還需要打開config/application.rb並配置您的應用程序。您可以使用舊的environment.rb文件作爲參考。

在您啓動應用程序之前的最後一步是將您的routes.rb文件更改爲新的Rails 3格式。這可能是遷移中最糟糕的部分,因爲您首先需要學習如何編寫Rails 3路由文件,然後手動寫入路由。更多信息可以在here找到。

我從來沒有使用Rails 1,所以有可能你可能需要改變一些其他的東西。 These three Railscasts一定會成爲您的有用資源。

+0

謝謝老闆。你給出的步驟真的很好,或者我。你說的很好,路由會殺了我。 – Rubyist

0

我已經將主要應用程序從2.3.10遷移到3.0.9 這是一個非常痛苦的過程,如果我想要遷移到3.1,情況會更糟。

根據你的應用程序的大小,我肯定會推薦創建一個新的應用程序並複製這些東西。

從這個老版本的導軌遷移到最新版本絕對不是一次飛躍,有很多不同的事情需要考慮。

但是,關於我的回答是最好的事情是,我建議你這樣做,測試的過程中,找到兼容的寶石等等......如此在軌道3和Ruby 1.9.2

+0

是的男人,你是對的。將新的應用程序作爲現有項目的克隆比較好。我們可以使用邏輯以及少數代碼可以重複使用。否則,整個垃圾代碼會在執行時造成麻煩。 – Rubyist

0

好得多哇,正如磚匠所說,這是一個飛躍!我在幾年前使用Rails 1 ..我沒有升級到Rails 2,我重新編寫了。

Rails 1.2.3應用程序有多大?

許多事情發生了變化,Rails中的功能,很多Gems,路由,資產管道,命名範圍,ActiveRecord查詢API ......甚至Ruby也發生了變化 - 只是升級是個壞主意。有許多新的概念和特徵,您不得不考慮,並且從乾淨的石板開始會更好。

這可能是一個變相的祝福。我認爲這是一個很好的機會,可以通過在Rails 3.1中重寫和重新設計來改進代碼庫:-)

我建議從頭開始在Rails 3.1應用程序中使用最重要的功能,同時保持1.2.3應用程序處於維護模式。

它可能也是一個很好的機會,以擺脫其很少使用的應用的一些「特色」,...

+0

是的你是對的。我也在想同樣的事情。感謝您讓我的決定變得強大。 – Rubyist

+0

它可能是一個艱難的銷售給你的老闆 - 只是不要說:) - 最後他/他會很高興 – Tilo

+0

謝謝男人。我的老闆知道一切,甚至我也向客戶解釋了這些條款。客戶也準備好了。 – Rubyist