[英]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版本之间的变化
(我已经看到了关于升级机制的这个问题 ,但是我对我应该尽可能轻松地进行升级的过程更感兴趣。)
几个月前我经历了这个过程,进行了大量的研究并整理了一个rake任务(基于别人的脚本和其他资源),可以帮助你标记要在代码中更改的内容。 这是为了升级到Rails 2.2,所以它没有考虑到Rails 2.3的变化:
哦,请务必检查您使用的插件和宝石是否兼容Rails 2.x并使用最新版本。
我绝对同意一次性直接升级到Rails 2.3。 不要一直把它推掉; 没有升级的时间越长,就越难以改变。 并且维护Rails 1.x代码更难,因为支持它的资源更少。
我刚开始将Rails 1.2.3应用程序升级到Rails 2.3.4环境。 我遇到的基本步骤和警告是:
environment.rb
设置,以查看新版本中是否需要这些设置。 routes.rb
更改,因为RoR2.3.4已经简化了指定路由。 form_tag
条目; 例如<%= form_tag :action => 'search' %>
变为`<%form_tag:action =>'search'do%>否则你会收到一些有趣的错误消息 <%= end_form_tag%>
更改为关闭块,如同`<%end%> 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.