繁体   English   中英

我应该如何升级Rails应用程序以使用最新版本的Rails

[英]How should I upgrade a Rails app to use the latest version of Rails

我正在研究目前使用Rails 1.2的Rails应用程序,所以我现在已经远远落后于最新的稳定版本(Rails 2.3)。

我应该如何进入更新版本的Rails?

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

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

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

(我已经看到了关于升级机制的这个问题 ,但是我对我应该尽可能轻松地进行升级的过程更感兴趣。)

几个月前我经历了这个过程,进行了大量的研究并整理了一个rake任务(基于别人的脚本和其他资源),可以帮助你标记要在代码中更改的内容。 这是为了升级到Rails 2.2,所以它没有考虑到Rails 2.3的变化:

http://gist.github.com/99535

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

我绝对同意一次性直接升级到Rails 2.3。 不要一直把它推掉; 没有升级的时间越长,就越难以改变。 并且维护Rails 1.x代码更难,因为支持它的资源更少。

我刚开始将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服务器的数据库迁移工具。

我的建议是花一周的时间来偿还你积累的任何测试债务,然后一下子全部升级。

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

花了比预期更长的时间。 该应用程序使用了一些已被删除或弃用的旧功能(如ActionWebService),因此转换这些功能需要一些时间。 但主要是我们遇到了很多微妙的错误,比如单选按钮params如何工作的细微差别,其中一些可归因于Ruby(与Rails)升级。

该应用程序的某些部分有不稳定的测试覆盖率。 如果我们通过更好的测试进入它,那一切都会容易得多。

我认为你可以获得一些Rails rake任务,可以在你的app中查找弃用。

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

此外,除了您在2.2和2.3中看到的发行说明页面之外,还应该在源本身中发布说明或更改日志。 另外,您可以使用“rails xxx new features”等搜索字词搜索博客帖子(使用谷歌博客搜索)。

你现在可能已经有了很多这方面的经验,但是在搜索不同的Rails 1.2> 2.3升级问题的过程中我遇到了这个问题,并且我自己也在考虑一些建议:

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

我将首先回答我自己的问题,用我用Google搜索引出的资源。 Rails 2.2发行说明Rails 2.3发行说明详细介绍了这两个版本中新增和更改的功能,但我找不到任何对早期版本如此明确的内容。

除了这个发布公告提到旧版本的Passenger不能与Rails 2.3一起使用之外,我还没有发现升级时会破坏什么。

我发现那些文档缺少一些细节,从2.1 => 2.2开始花了很长时间。 这是我的笔记:

最大的时间汇: assert_redirected_to已经发生了重大变化,不再支持哈希(根本没有?)

此外,需要设置environment/test.rb以禁用伪造保护

如果有人在这些积分上获得2.3的消息那就太棒了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM