我从另一个运行在Ruby 1.8并使用Rails 2的开发者那里继承了一个旧项目。我对Ruby和Rails项目很陌生,所以我想得到有关升级此类项目的建议。这个项目的一个主要问题是它没有测试覆盖率。根本没有单元测试。以下是一些项目统计数据:
$ 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。 这有点令人生畏,但我的观察:
- 我开始尝试创建一个新项目,就像你建议的那样 - 但我很快就决定反对它,并回到更新现有项目。
- 我发现迁移到 Rails 3 的 RailsCasts 非常有用。 第一个在这里:http://railscasts.com/episodes/225-upgrading-to-rails-3-part-1
- 如果你无论如何都要编写测试(这绝对是正确的做法),我发现在升级到 3.0 后开始这个是最容易的。 我记得,在 2.3 和 3.0 之间,测试 gem 的兼容版本存在几个问题。 我最喜欢的测试环境包括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/
从 Rails2 迁移到 Rails 3
还有这个插件:
https://github.com/rails/rails_upgrade