如何使我的Ruby on Rails 2.3.4应用程序“Rails 3-ready”

29

我正在使用Ruby on Rails开发一个应用程序,想要至少维护几年,所以我担心下一个版本很快就会推出。

从Rails 1升级到Rails 2非常痛苦,以至于我不想去尝试,而是冻结了我的gems,让应用程序孤独地死在黑暗中。

在这个项目中,我不想那样做。首先,因为这个新版本看起来棒极了,其次因为这个应用程序可能会成为一个真正的产品。

  • 我该如何准备我的应用程序,使它尽可能少地更改就能升级?

  • 你认为切换版本需要多长时间?

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

我已经在查看弃用通知...还能做什么?

8个回答

10

您最好的做法是通过博客和 Github 仓库关注 Rails 3 的开发进展,并保留您的应用程序的一个副本。

官方的 Ruby on Rails 博客 会不时地发布“边缘新功能”文章。还有一些其他博客也经常写一些有关边缘新功能的文章。这些博客通常会突出较大的特性,以便您了解可以使用的所有新功能。

我不确定 Rails 3 距离发布有多近(据我所知,核心团队在 2009 年 5 月的 RailsConf 上谈论发布),但您可以将边缘版本的 Rails 冻结到您的应用程序中,然后查看哪些内容破裂了。如果您正在使用 git 或另一个 DVCS,则可以为 Rails 3 制作一个分支,并定期将 Rails 更新到最新的边缘代码。只需注意,边缘 Rails 是一个不断变化的目标,因此在您拉取更新的 Rails 代码时,您的应用程序中的内容可能会损坏或修复自身。

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


2
虽然“酷炫的新功能”经常被博客提及,但问题在于弃用;人们是否积极地博客介绍哪些功能不再起作用或将来不再支持? - Stobor
使用Rails 2.3.9运行您的应用程序(http://weblog.rubyonrails.org/2010/9/4/ruby-on-rails-2-3-9-released) - Matt

2
单一最重要的事情,是让迁移到新版本的Rails变得容易的方法,就是拥有全面的测试套件。如果没有好的测试套件,我永远不会有信心认为新版本的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中存在着一个回归性的错误,而在Rails lighthouse上有一个补丁,但该补丁并未包含在发布版中(因为它是在发布后才被发现的)。
一旦你建立了测试套件,只需保持与每个Rails版本同步更新即可(等待几周进行升级是可以的,但不要跳过任何版本)。
Yehuda Katz(Rails核心团队成员)已经表示,很可能会发布一个过渡版本,其中包含废弃警告等内容。

只要您拥有良好的测试套件来暴露不可避免的升级问题,并保持与Rails版本的同步,迁移到Rails 3就不应该太困难。

2

2
我认为不会有太大的问题。根据最初的报告,Rails团队意识到他们不能像从1到2那样进行重大改写。
他们甚至说:
“我确定Rails 3中会有一些不兼容的部分,但我们将尽量将其减少到最小,并使将Rails 2.x应用程序转换为Rails 3变得非常容易。”
我更担心从Merb转换到Rails 3。

1

只需要做一件事

首先备份您的旧版本项目,然后

在终端(命令提示符)中输入

rails new path/of/the/project

例如,如果我的2.3.*项目位于home/rails_projects/myproject,那么:

rails new home/rails_projects/myproject

或者

cd home/rails_projects
rails new myproject

它会询问是否对任何/config或其他文件进行了修改。请适当处理。


1

将会有一些自动化的兼容性检查器。同时,关注http://www.railsplugins.org/,以便了解你所依赖的库是否将进行升级。这次 Rails 核心团队似乎向社区提前通知了很多,因此任何正在积极维护的库都应该可以使用。


http://isitruby19.com/ 也是一个值得关注的好网站。许多人将会升级到 Ruby 1.9,因为 Rails 已经完全兼容 1.9 版本。 - Jared

1

1

为了准备您的应用程序,最好的方法就是像Jared所说的那样。遵循Rails3的开发。

关于时间消耗,我认为这取决于您在发布之前如何跟随rails3的开发。

至于部署,不应该出现太多问题。Rails 3将使用Rack。因此,您可以使用Mongrel、Passenger或任何服务器/网关来启动它,并且不应该出现任何问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接