【问题标题】:How to update from Ruby on Rails 2.3.18 to 4.2.4 (latest)?如何从 Ruby on Rails 2.3.18 更新到 4.2.4(最新)?
【发布时间】:2015-09-14 12:33:57
【问题描述】:

我想将一个巨大的 Ruby on Rails v2.3.18 应用程序更新到 Rails v4.2.4(最新)。

在做了someresearch之后,我想出了:

  • 在 Rails 2.3.18(2013 年 3 月 18 日)之后,到 Rails 4.2.4(2015 年 8 月 24 日)共发布了 195 个版本
    • 其中 92 是稳定版本
    • 2 个主要版本
    • 775 个文件已更改
    • 909 次提交

我们的应用程序在 Ruby 2.1.5 上运行 Ruby on Rails 2.3.18。

  • Ruby 也应该从此版本更新到 2.2.x ?
  • 有没有人实现或尝试过这种“信仰的飞跃”并取得成功?
  • 我应该从哪里开始以实现我的目标?
  • 更新任何 Ruby on Rails 应用程序的基本流程是什么?

【问题讨论】:

    标签: updates ruby-on-rails-2 ruby-on-rails-4.2


    【解决方案1】:

    我也一直在用一些 5 年前的项目思考这个问题 - 我是继续使用 rails 2.3.18 LTS https://railslts.com/ 还是迁移到 rails 4.2,因为我知道我需要每年/每半年更新一次导轨版本。我怀疑随着新功能的开发,我会更成功地进行选择性替换。

    不管怎样,我找到的信息似乎表明这是一个漫长的逐步过程:

    这篇文章可能会有所帮助 - https://groups.google.com/d/msg/rubyonrails-talk/y0q1fc8N_GU/H2xOsy2mYpwJ

    Rob Biedenharn 建议

    • 更新到 rails-2.3.18 确实没有理由不这样做,并且有很多充分的理由表明您应该已经这样做了。 2.3.9 (2010-09-04) 是第一个对升级到 rails-3.0 发出弃用警告的版本 2.3.18 (2013-03-18) 是 2.3 行的最后一个版本,包含对至少 10 个漏洞的修复(其中一些非常严重!)

    • 让你的所有测试通过(如果你没有测试,你最好有信心) • 解决所有弃用警告

    • 暂时不要升级 ruby https://developer.uservoice.com/blog/2012/03/04/how-to-upgrade-a-rails-2-3-app-to-ruby-1-9-3/ 但是你可能需要升级到 ruby​​-1.8.7,因为 rails-3.0 不正式支持 1.8.6)

    哦,我按照 Jason Fleetwood-Boldt 的建议查看了 http://edgeguides.rubyonrails.org/upgrading_ruby_on_rails.html,它对从 3.0 到 4.1 的升级过程进行了更详细的了解。但是,如果您没有时间亲自去看看,那么也许我已经为您提供了足够的信息来权衡升级与重写路径。

    • 升级到 rails-3.0.0(甚至可以直接升级到 rails-3.0.20) • 让你的所有测试通过

    • 升级到 ruby​​-1.9.2(甚至可能是 ruby​​-1.9.3) • 让你的所有测试通过

    • 升级到 rails-3.1.12(rails-3.1 系列的最后一个) 这可能不是严格要求的,但 3.1 引入了 Asset Pipeline 并使 jQuery 成为默认的 JavaScript 框架。 如果您在应用程序中大量使用 Prototype 或 Scriptaculous,最好将其转换为 jQuery(并获取 https://github.com/rails/jquery-ujs) • 让你的所有测试通过

    • 升级到 rails-3.2.19 • 让你的所有测试通过

    • 升级到 ruby​​-2.1.2(此时可能没有理由只使用 2.0) • 让你的所有测试通过

    • 升级到 rails-4.0.8 • 让你的所有测试通过

    • 升级到 rails-4.1.4 • 处理新的secrets.yml 文件 • 让你的所有测试通过

    • 休假

    说真的,如果您真的想走升级路线,还有很多事情要做。我什至没有提到您几乎肯定会遇到的任何问题,这些问题在新版本的 Rails 甚至新的 Ruby 中不再起作用的 gem 中。我建议您非常认真地考虑“刷​​新”应用程序,将其作为一种将应用程序引入当前受支持的 RoR 堆栈的更简单方法。

    【讨论】:

    • 现在两年过去了,随着 Rails 5.1 的推出和使用,差距变得更大。我目前的策略是不更新超过 2.3.18 LTS 的 rails。相反,如果需要 Rails 2.3.18 没有提供(或提供良好),请并行运行 phoenix 并逐步迁移控制器。我倾向于凤凰城进行未来的绿地项目。
    • Rails LTS 2.3.18.19 现在(2018 年 3 月)支持 ruby​​ 2.3 - 有一些手动更改,它可能会完全破坏一些插件/宝石或需要更新的版本,所以你会有一些升级工作要做 - 多少取决于您的特定应用、插件和 gem。
    猜你喜欢
    • 2011-05-18
    • 2014-04-14
    • 2017-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多