升级 Rails 应用程序的简单方法是啥?

Posted

技术标签:

【中文标题】升级 Rails 应用程序的简单方法是啥?【英文标题】:What is the easy way to upgrade rails application?升级 Rails 应用程序的简单方法是什么? 【发布时间】:2018-02-13 11:37:51 【问题描述】:

我正在从事一个非常古老的 Rails 项目。 gemfile是这样的:

source 'http://rubygems.org'

gem 'rails', '2.3.17'

gem 'rake', '0.8.7'
gem 'rdoc', '3.6.1'

gem 'mysql', '2.8.1'

gem 'roo', '1.9.7'
gem 'rubyzip', '0.9.4'
gem 'pdf-writer', '1.1.8'

gem 'prawn', '0.12.0'

gem 'sendmail'

gem 'htmldoc', '0.2.3'

ruby 版本是 1.8.7

升级此 Rails 应用程序的简单方法是什么?我可以将每个 gem 的版本更改为最新版本并期望它可以正常工作吗?

【问题讨论】:

不,你显然不能。更重要的是,几乎所有事情都需要人工干预,因为自2.3.17 以来许多接口都发生了变化。我建议逐步进行(2.3 ⇒ ​​3.2 ⇒ 4.1 ⇒ 5.1),并在每个后续步骤中解决问题。 Rails 2.3 到 5.x 和 Ruby 1.8 到 2.x?如果项目很小,你应该考虑从头开始重建它。 除了@mudasobwa 所说的之外,首先要通过测试覆盖您当前的应用程序。一旦获得最大覆盖范围,您就可以开始更改版本。版本更改和手动干预通常会破坏事情,您有兴趣事先了解需要修复的内容。提示:使用 Simplecov gem 检查覆盖率。 【参考方案1】:

没有简单的方法。在开始升级之前,您必须添加测试以确保应用程序在升级后仍然可以工作。 然后我建议将 gem 描述更改为以下语法: gem 'mysql', '~> 2.8.1' 它告诉 bundler 只更新 gem 的最后一个版本号。

然后重复以下步骤

将 rails 版本更改为下一个 捆绑更新轨道 手动更正了冲突的 gem 版本 捆绑更新

【讨论】:

以上是关于升级 Rails 应用程序的简单方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

在 Rails 应用程序中处理大文件上传的最佳方法是啥?

使用 Postmarkapp 在 Rails 应用程序中处理电子邮件异常的最佳方法是啥?

我想在我的 rails 应用程序中实现组权限。最有效的方法是啥?

在 Rails 中播种数据库的最佳方法是啥?

在 Rails 中创建主观视图的好方法是啥?

Rails 3:在 Rails 中使用 JSON 响应 REST-ful 操作的正确方法是啥?