我有一个项目目前运行在 Rails 4~ 和 Ruby 2~,它的较低版本。我不记得确切的迭代,但它在大约 8 年前达到了生命的尽头
就上下文而言,原来的开发者不见了。项目直接在prod开发,从来没有功能测试环境。没有任何类型的合并历史可供参考,如果这有帮助的话。
我的任务是升级项目并修复过程中的任何错误。我将 ruby 提升到 2.7~,将 rails 提升到 5.2~,然后是所有的 gems,直到
bundle install
不再出错。
那是一个重要的里程碑,但我一直在努力让它运行
rails server
。我遇到了一些我更正或注释掉的问题,现在我被困在一个未初始化的方法上。
我尝试了所有已知的修复,在这一点上,我想我需要用不同的方法再试一次。
提出的不同想法是:
从文件中删除所有代码并逐渐重新引入它。
删除整个模块并重新引入它们。
开始在线咨询。
我不介意正确的过程是否乏味,只要它是有效的,我知道它不会完全没有效率
我认为删除所有非必要的组件,让着陆页正常工作,将是最好的第一步。但是我对 RoR 的工作原理以及它运行的必要条件知之甚少。
谢谢大家
我尝试了什么:
将所有 gem 文件升级到与更新版本的 RoR 兼容的版本。
解决发生的错误以绕过或完全删除它们。通过删除代码片段可能会产生更多意想不到的错误。
没有简单的方法可以做到这一点,但是有办法。这种 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 本身升级的版本引脚。您可能需要将其中一些替换为更新的受支持版本。希望这不会太麻烦!