2013-01-25 43 views
1

我從另一個在Ruby 1.8上運行並使用Rails 2的開發者繼承了一箇舊項目。我對Ruby和Rails項目非常陌生,所以我想獲得有關升級此類項目的建議。這個項目的一個主要問題是它沒有測試覆蓋率。根本沒有單元測試。下面是一些項目統計:如何繼續將Rails 2項目升級到Rails 3+?

$ cloc . 

http://cloc.sourceforge.net v 1.56 T=3.0 s (149.3 files/s, 15714.0 lines/s) 
------------------------------------------------------------------------------- 
Language      files   blank  comment   code 
------------------------------------------------------------------------------- 
Ruby       379   3106   1476   15246 
Javascript      18   2981   2369   11008 
CSS        16   690   1208   7156 
HTML       21   324    69   1039 
YAML       13    46   164   236 
Bourne Shell      1    2    5    17 
------------------------------------------------------------------------------- 
SUM:       448   7149   5291   34702 
------------------------------------------------------------------------------- 

我的計劃是開始一個新的Rails項目和編寫測試,看主題失敗,然後一點一點地在舊代碼帶來的,更新需要更新的部分,並前進。

這是否令人望而生畏? 上述方法是否現實? 我應該注意哪些缺陷?

回答

2

我最近自己做了這個,我通過Rails 3.0和3.1遷移了一個Rails 2.3項目,然後在3.2中結束。這是一個有點嚇人,但我的意見:

  1. 我開始試圖創造一個新的項目,像你這樣的建議 - 但我很快就決定反對它,並且回到了剛剛更新現有項目。
  2. 我發現RailsCasts在遷移到Rails 3時非常有用。第一個是這樣的:http://railscasts.com/episodes/225-upgrading-to-rails-3-part-1
  3. 如果你要寫測試(絕對是正確的),我發現在升級到3.0後最簡單。據我所知,測試寶石的兼容版本在2.3和3.0之間有幾個問題。我最喜歡的測試環境包括RSpecCucumberGuard。這個RailsCast非常適合設置測試:http://railscasts.com/episodes/275-how-i-test
  4. 版本控制是你的朋友。我爲每一個主要的發佈版本都做了一個git分支。那樣,當我嚴重地扒東西時,我可以輕鬆地取消分支並再次嘗試。

它的長短 - 它是可行的,但它需要一段時間才能正確。從一個「新鮮」的項目開始,至少在我看來,並不是必需的或有幫助的。

1

嗯..我認爲這不是一個好主意,更好地升級到最新的穩定2.x版本,目前是2.3.15。

但是,如果你想這樣做,無論如何,可能是這些文章可以幫助你:

http://www.railsdispatch.com/posts/upgrading-a-rails-2-app-to-rails-3

http://net.tutsplus.com/tutorials/ruby/5-awesome-new-rails-3-features/

Migrating from Rails 2 to Rails 3

而且這個插件:

https://github.com/rails/rails_upgrade

+0

你爲什麼認爲這不是一個好主意? – Roman

+0

因爲Rails 3中的變化太多,沒有測試可能會非常痛苦)) – Bob