我应该如何升级过时的 ruby on rails 项目?

问题描述 投票:0回答:1

我有一个项目目前运行在 Rails 4~ 和 Ruby 2~,它的较低版本。我不记得确切的迭代,但它在大约 8 年前达到了生命的尽头

就上下文而言,原来的开发者不见了。项目直接在prod开发,从来没有功能测试环境。没有任何类型的合并历史可供参考,如果这有帮助的话。

我的任务是升级项目并修复过程中的任何错误。我将 ruby 提升到 2.7~,将 rails 提升到 5.2~,然后是所有的 gems,直到

bundle install
不再出错。

那是一个重要的里程碑,但我一直在努力让它运行

rails server
。我遇到了一些我更正或注释掉的问题,现在我被困在一个未初始化的方法上。

我尝试了所有已知的修复,在这一点上,我想我需要用不同的方法再试一次。

提出的不同想法是:

  • 从文件中删除所有代码并逐渐重新引入它。

  • 删除整个模块并重新引入它们。

  • 开始在线咨询。

我不介意正确的过程是否乏味,只要它是有效的,我知道它不会完全没有效率

我认为删除所有非必要的组件,让着陆页正常工作,将是最好的第一步。但是我对 RoR 的工作原理以及它运行的必要条件知之甚少。

谢谢大家

我尝试了什么:

  • 将所有 gem 文件升级到与更新版本的 RoR 兼容的版本。

  • 解决发生的错误以绕过或完全删除它们。通过删除代码片段可能会产生更多意想不到的错误。

ruby-on-rails ruby ruby-on-rails-4 rubygems
1个回答
4
投票

没有简单的方法可以做到这一点,但是有办法。这种 yak shaving 的复杂性取决于项目本身、它的依赖关系以及其他很难提前预测的因素。这可能很容易,也可能几乎是不可能的,但它可能只是乏味,如果系统地处理,将是你可以结束而不会太沮丧的事情。

从 Ruby 2 升级到最新版本,例如 3.2,不会有什么大不了的。 3.x 系列中最大的变化是 kwargs(关键字参数,或

**args
)的处理方式。您可能希望逐步升级您的 Ruby,因为我不确定 Rails 4 是否适用于 Ruby 3.x.

至于 Rails 本身,没有太多破坏性的变化,但是配置的表达方式有很多变化。请记住,您始终可以创建一个新项目来比较 should 在当前版本的 Rails 中使用

rails new
进行配置的方式,这是您在确保像
application.rb
这样的各种基础符合款式较新。

一些最大的变化是在 asset pipeline 中,它自版本 4 以来以戏剧性的方式发生了多次变化。现在您可以选择如何配置它,所以找到您满意的方法并坚持下去接着就,随即。在它只是链轮之前。

依赖关系是你遇到最多摩擦的地方,通常是因为你将使用停止更新的东西并且具有阻止 Rails 本身升级的版本引脚。您可能需要将其中一些替换为更新的受支持版本。希望这不会太麻烦!

© www.soinside.com 2019 - 2024. All rights reserved.