如何继续将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中结束。这是一个有点吓人,但我的意见:
- 我开始试图创造一个新的项目,像你这样的建议 - 但我很快就决定反对它,并且回到了刚刚更新现有项目。
- 我发现RailsCasts在迁移到Rails 3时非常有用。第一个是这样的:http://railscasts.com/episodes/225-upgrading-to-rails-3-part-1
- 如果你要写测试(绝对是正确的),我发现在升级到3.0后最简单。据我所知,测试宝石的兼容版本在2.3和3.0之间有几个问题。我最喜欢的测试环境包括RSpec,Cucumber和Guard。这个RailsCast非常适合设置测试:http://railscasts.com/episodes/275-how-i-test
- 版本控制是你的朋友。我为每一个主要的发布版本都做了一个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
而且这个插件:
你为什么认为这不是一个好主意? – Roman
因为Rails 3中的变化太多,没有测试可能会非常痛苦)) – Bob