【问题标题】:How to upgrade Rails 2.3 to 3.2(or 4.X) without test suite?如何在没有测试套件的情况下将 Rails 2.3 升级到 3.2(或 4.X)?
【发布时间】:2014-04-10 18:58:30
【问题描述】:

我们有 Rails 2.3.4(ruby 1.8.7) 应用程序,它很大吗?(300 个模型,21,000 LOC 和 75 个控制器,35,000 LOC)具有中等复杂性,我们计划将此应用程序升级到 Rails 3.2(或 Rails 4.X)

现在最大的障碍是我们没有一个测试用例!

我在网上搜索了 stackoverflow 并确实找到了一些有用的链接,但所有链接都认为应用程序将具有良好的测试覆盖率但在我们的例子中它不是真的,所以考虑到所有这些, 我有以下问题?

  • 我应该升级哪个版本的 Rails 3.X(使用 ruby​​ 1.9.3 或 2?)或 Rails 4.X 和 ruby​​ 2?
  • 每个人都建议采用增量方式(首先是 rails 3,然后是 ruby​​ 1.9,然后是 rails 3.2,然后是 Rails 4)对我们的情况真的有帮助,因为
    • 因为我们没有测试套件
    • 由于它是一个大应用程序,每次升级后都会进行大量手动测试,因此每次升级后每次小的增量更改后重复测试(尽管更改是大的测试只能进行一次)是正确的方法?
  • 让我们假设即使我们现在编写测试用例(对于 Rails 2.3),那些 测试在更新版本上运行顺利?还是我们需要写新鲜的 升级 Rails 版本的测试用例?

  • 我知道估算有点困难,但仍有人尝试升级
    你的大应用以及花了多少时间?

考虑到以上所有因素,我们应该遵循哪些最佳策略?

欢迎任何指向相关博客和建议的指针。

提前致谢。

【问题讨论】:

  • 现在编写这些测试用例。如果我在某个地方开始工作并且他们的应用程序上没有测试用例,我要做的第一件事就是要求测试覆盖率或找到其他地方工作。从2.33.1 的转换是巨大的 与资产管道和添加ActiveRelation 等。如果没有测试用例,您将完全没有信心您的应用程序正常运行。

标签: ruby-on-rails ruby unit-testing ruby-on-rails-3.2 rails-3-upgrade


【解决方案1】:

如果是我,我会咬紧牙关,现在为 2.3 编写测试。很多会转移,有些不会。编写完成后,将应用程序升级到 4.x,看看有什么问题。然后找出是代码还是您的测试并相应地进行调整。

没有测试...我没有任何建议:/

【讨论】:

  • 为什么 4.X 为什么不是我们的 3.2.X 如果应用很大,最好坚持使用稳定版本 rt ?
【解决方案2】:

首先,您肯定会使用 Ruby 1.9 升级到 Rails 3。在我们的例子中,我们有一个大型应用程序,从 Ruby 1.8.7 迁移到 1.9 比从 Rails 2.3 迁移到 3.0 的工作量要少得多。我们花了几个月的时间才获得 1.9,但一年多的时间才获得 Rails 3.0

然后你升级到带有 Ruby 2.0 的 Rails 4。升级不易,但一定会提升应用性能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多