1

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

这是否像我被告知的那样令人生畏?上述方法是否现实?我应该注意哪些陷阱?

4

2 回答 2

2

我最近自己做过这个;我通过 Rails 3.0 和 3.1 迁移了一个 Rails 2.3 项目,然后最终迁移到 3.2。这有点令人生畏,但我的观察:

  1. 我开始尝试创建一个新项目,就像你建议的那样 - 但我很快就决定反对它,并回到只是更新现有项目。
  2. 我发现关于迁移到 Rails 3 的 RailsCasts 非常有用。第一个在这里:http ://railscasts.com/episodes/225-upgrading-to-rails-3-part-1
  3. 如果您无论如何都要编写测试(这绝对是正确的做法),我发现在升级到 3.0.0 之后开始这个是最容易的。我记得,在 2.3 和 3.0 之间,关于测试 gem 的兼容版本存在几个问题。我最喜欢的测试环境包括RSpecCucumberGuard。这个 RailsCast 非常适合设置测试: http ://railscasts.com/episodes/275-how-i-test
  4. 版本控制是您的朋友。我为我完成的每个主要版本创建了一个 git 分支。这样,当我把东西弄得很糟糕时,我可以很容易地把树枝报废,然后再试一次。

总而言之 - 它是可行的,但需要一些时间才能让它正确。至少在我的情况下,从一个“新鲜”项目开始,结果证明没有必要或有帮助。

于 2013-01-28T03:36:54.743 回答
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/

从 Rails 2 迁移到 Rails 3

还有这个插件:

https://github.com/rails/rails_upgrade

于 2013-01-25T06:38:13.533 回答