如何继续将Rails 2项目升级到Rails 3+?

如何继续将Rails 2项目升级到Rails 3+?

问题描述:

我从另一个在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项目和编写测试,看主题失败,然后一点一点地在旧代码带来的,更新需要更新的部分,并前进。

这是否令人望而生畏? 上述方法是否现实? 我应该注意哪些缺陷?

我最近自己做了这个,我通过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分支。那样,当我严重地扒东西时,我可以轻松地取消分支并再次尝试。

它的长短 - 它是可行的,但它需要一段时间才能正确。从一个“新鲜”的项目开始,至少在我看来,并不是必需的或有帮助的。

嗯..我认为这不是一个好主意,更好地升级到最新的稳定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