4

我正在开发一个目前使用 Rails 1.2 的 Rails 应用程序,所以我现在距离最新的稳定版本(Rails 2.3)还有很长的路要走。

我应该如何进行迁移到更新版本的 Rails 的过程?

我应该一次升级一个版本还是直接升级到 Rails 2.3?

我如何找出 Rails 版本之间的变化,两者

  • 让我有更多升级理由的改进或新功能
  • Rails 更改需要我修改我的应用程序才能与新版本一起使用。

(我在升级机制上看到过这个问题,但我更感兴趣的是我应该经历的过程,以使升级尽可能轻松。)

4

7 回答 7

4

几个月前我经历了这件事,做了很多研究并整理了一个 rake 任务(基于其他人的脚本和其他资源),这可能会帮助您标记代码中需要更改的内容。这是为了升级到 Rails 2.2,所以它不考虑 Rails 2.3 的变化:

http://gist.github.com/99535

哦,请务必检查您使用的插件和 gem 是否与 Rails 2.x 兼容并使用最新版本。

而且我绝对同意一次性直接升级到 Rails 2.3。不要一直拖延;不升级的时间越长,它就越困难,因为会发生更多变化。而且维护 Rails 1.x 代码更加困难,因为支持它的资源较少。

于 2009-04-22T01:58:04.817 回答
2

我的建议是花一周时间偿还你积累的所有测试债务,然后一举完成升级。

在我工作的地方,我们去年夏天将一个非常大的应用程序从 1.2 升级到了 2.0.2,同时升级到了 Ruby 1.8.6。

花费的时间比预期的要长得多。该应用程序使用了一些已被删除或弃用的旧功能(如 ActionWebService),因此转换这些功能需要一些时间。但大多数情况下,我们遇到了很多细微的错误,例如单选按钮参数的工作方式略有不同,其中一些是由于 Ruby(与 Rails 相比)升级造​​成的。

该应用程序的某些部分的测试覆盖率参差不齐。如果我们进行了更好的测试,一切都会容易得多。

于 2009-04-21T23:09:18.263 回答
2

我刚刚开始将 Rails 1.2.3 应用程序升级到 Rails 2.3.4 环境。我遇到的基本步骤和注意事项是:

  • 创建一个类似于您的基本应用程序的框架应用程序
  • 检查您在旧应用程序中的任何environment.rb设置,以查看新版本是否需要这些设置。
  • 将所有 .rhtml 文件迁移到 .html.erb;使用脚本或手册。就我而言,有 100 多个文件,因此自动化更容易
  • routes.rb鉴于 RoR2.3.4 已简化指定路线,请检查可能需要进行的任何更改。
  • 确保您手头有一个良好的 SCM 系统;例如 Git、SVN 甚至 CVS,以便可以捕获小的增量更改。
  • 检查您需要的插件。一开始我只是删除了所有插件,实际上有些插件对于要在移植的应用程序中实现的功能已经过时了。
  • 更新任何form_tag条目;例如<%= form_tag :action => 'search' %>变成 `<% form_tag :action => 'search' do %> 否则你会得到一些有趣的错误信息
  • 同样将<%= end_form_tag%>`<% end %> 更改为关闭块
  • 检查您是否有 1.2.3 版本中的任何插件,这些插件现在已从核心中删除,并且必须作为插件安装并针对依赖项进行配置。我对弹出窗口的in_place_edit和调用有一些问题。calendar

正如其他人所说,它可能需要比预期更长的时间。我已经完成了大约 30 小时的迁移工作。我估计需要更长的时间。所以这很好;但在生成 PDF 方面仍有一些工作要做。

只是为了让应用程序在 MS-Windows 环境中运行更有趣;Ruby 1.8.7、Rails 1.2.3 和 MS SQL Server。目的是迁移到 Linux 环境;Ruby 1.9.x、Rails 2.3.4 和 MySQL 数据库等涉及到 MySQl 服务器数据库迁移工具。

于 2009-12-07T10:49:40.240 回答
1

我认为您可以获得一些 Rails rake 任务,这些任务将在您的应用程序中寻找弃用。

只要您的应用程序处于版本控制中,我就会一次性完成升级,并一次查看一条错误消息。

此外,除了您看到的 2.2 和 2.3 的发行说明页面外,源本身中还应该有发行说明或更改日志。另外,您可以使用“rails xxx 新功能”等搜索词搜索博客文章(使用 google 博客搜索)。

于 2009-04-21T21:28:40.953 回答
0

我将首先用我通过谷歌搜索找到的资源回答我自己的问题。Rails 2.2 发行说明Rails 2.3 发行说明详细介绍了这两个发行版中的新功能和更改功能,但我找不到任何早期版本的明确信息。

除了这个发布公告提到旧版本的Passenger 不能与Rails 2.3 一起使用之外,我还没有发现太多关于升级时会出现什么问题的信息。

于 2009-04-21T21:25:01.837 回答
0

我发现那些文档缺少一些细节,从 2.1 => 2.2 迁移需要相当长的时间。这是我的笔记:

最大的时间槽:assert_redirected_to发生了显着变化,不再支持哈希(完全?)

另外,需要设置environment/test.rb禁用防伪保护

如果有人有关于 2.3 的这些要点的消息,那就太棒了。

于 2009-06-06T14:07:57.793 回答
0

在这一点上,你可能已经有很多经验了,但是我在搜索不同的 Rails 1.2>2.3 升级问题时遇到了这个问题,并认为我自己会提出一些建议:

我在一个相对简单的应用程序中最大的突破是使用 Pagination。我发现 Classic Pagination 插件是天赐之物。

于 2009-12-13T02:42:55.800 回答