2009-09-16 101 views
29

我正在开发一个Ruby on Rails应用程序,我至少要维护几年,所以我很关心下一个版本即将推出。如何使我的Ruby on Rails 2.3.4应用程序“Rails 3-ready”

从Rails 1跳到Rails 2是一件非常痛苦的事情,我没有打扰并冻结我的宝石,让应用程序单独在黑暗中死去。

在这个项目上,我不想那样做。首先是因为this new version looks awesome,但也因为这个应用程序可能变成一个真正的产品。

  • 我该如何准备自己的应用程序,以便尽可能少地进行升级。

  • 您认为切换版本会花费多少时间?

  • 那我的服务器呢?部署?

我已经在寻找不赞成通知......我还能做什么?

回答

10

最好的t你可以做的事情是通过博客和Github存储库来跟踪Rails 3的开发,并跟随你的应用程序的副本。

官方Ruby on Rails blog每隔一段时间更新一次“Edge的新功能”。有经常在边缘写新东西的otherblogs。这些博客中经常会突出显示较大的功能,因此您可以了解所有可以使用的酷炫新功能。

我不确定Rails 3的发布有多接近(最后我听说核心团队在五月份在RailsConf 2009上发布了一个版本),但是您总是可以将Rails的边缘版本冻结到您的应用程序中,看看有什么突破。如果您使用的是git或其他DVCS,则可以专门为Rails 3创建分支,并定期将Rails更新为最新的边缘代码。请注意,边缘Rails是一个移动的目标,因此当您在使用较新的Rails代码时,应用程序中的事物可能会破坏或修复自己。

更新: Jeremy McAnally在他的博客上提供了从Rails 2升级到Rails 3的大量信息。 http://omgbloglol.com/

+2

虽然“很酷的新功能”经常被博客讨论,但问题在于弃用;是否有人在积极地撰写关于什么不会/不再工作的博客? – Stobor

+0

使用Rails 2.3.9运行你的应用程序(http://weblog.rubyonrails.org/2010/9/4/ruby-on-rails-2-3-9-released) – Matt

2

我不认为会有一个主要问题。去关什么在初次报告Rails的团队意识到,他们不能做重大改写像他们从1到做2

说,他们甚至说:

我敢肯定有”将会是Rails 3的一些不兼容的部分,但我们会尽量将它们保持在最低限度,并且将Rails 2.x应用程序转换为Rails 3非常容易。

我会更关心的从Merb到Rails 3.

1

为了准备你的应用程序,Jared说的最好的方式。遵循Rails3开发。

耗时,我认为这取决于您在发布之前如何遵循rails3开发。

而对于部署,它不应该带来太多问题。 Rails 3将使用Rack。所以你可以用杂种,乘客或任何服务器/网关启动它,它不应该给你任何问题。

2

你可以做,可以很容易地迁移到轨道的一个新版本的一个最重要的事情是有一个全面的测试套件。没有一个好的测试套件,我永远不会有信心,新版本的rails没有在我的应用程序中破坏某些东西。在我正在开发的当前Rails应用程序中,我们从2008年10月开始使用Rails 2.1.1。从那时起,我们已经迁移到Rails 2.1.2,2.2.2,2.3.2,2.3.3以及现在2.3.4。我做了迁移到2.3.2,2.3.3和2.3.4 ...以及2.3.2和2.3.3升级,我们有一些失败的测试,提醒我们如果没有这样的一个我们不会发现的问题好的测试套件。失败的测试实际上提醒我们在Rails灯塔中有一个退步错误,但它没有包含在发行版中(因为它是在发布后发现的)。

一旦你得到了测试套件的地方,只是留在每个轨释放电流(等待一两个星期升级是好的,只是不跳过任何版本的)。

Yehuda Katz(Rails核心团队的成员)has stated最有可能是过渡版本,包含弃用警告等。

所以只要你有一个很好的测试套件,露出不可避免的升级问题,并保持与Rails释放电流,迁移到Rails 3应该不会太困难。

1

将会有一些自动兼容性检查器。另外,请留意http://www.railsplugins.org/,以便您知道您所依赖的库是否将升级。 Rails Core团队似乎在这个时候给社区提供了很多预先通知,所以任何积极维护的lib都应该很好。

+0

http://isitruby19.com/是也是一个很好的网站,以保持关注。由于Rails具有1.9完全兼容性,因此很多人都将升级到Ruby 1.9。 – Jared

1

只要做一件事

把你的旧工程的备份,然后再

在终端(命令提示符)如果我写2.3

rails new path/of/the/project 

例如。*项目是home/rails_projects/myproject然后

rails new home/rails_projects/myproject 

cd home/rails_projects 
rails new myproject 

它会问,如果有任何/config或其他文件进行任何修改。做适当的。