29

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

从 Rails 1 升级到 Rails 2 非常痛苦,以至于我没有费心去冻结我的 gem,让应用程序在黑暗中独自死去。

在这个项目上,我不想这样做。首先是因为这个新版本看起来很棒,还因为这个应用程序可能会变成一个真正的产品。

  • 我如何准备我的应用程序,以便它可以通过尽可能少的更改进行升级。

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

  • 我的服务器呢?部署?

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

4

8 回答 8

10

您可以做的最好的事情是通过博客和 Github 存储库关注 Rails 3 的开发,并保留您的应用程序的副本。

官方Ruby on Rails 博客每隔一段时间就会更新“Edge 中的新功能”帖子。还有其他 博客也经常写关于边缘新事物的文章。这些博客中通常会突出显示较大的功能,因此您可以了解所有可以使用的很酷的新功能。

我不确定 Rails 3 离发布还有多远(上次我听说核心团队在 5 月的 RailsConf 2009 上谈论发布),但你总是可以将 Rails 的边缘版本冻结到你的应用程序中,然后看看有什么问题。如果您使用 git 或其他 DVCS,您可能会专门为 Rails 3 创建一个分支,并定期将 Rails 更新到最新的边缘代码。请注意,边缘 Rails 是一个移动的目标,因此当您引入更新的 Rails 代码时,您的应用程序中的东西可能会自行中断或修复。

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

于 2009-09-16T21:27:00.120 回答
2

我不认为会有大问题。偏离最初报告中所说的,Rails 团队意识到他们不能像从 1 到 2 那样进行重大重写。

他们甚至说:

我确信 Rails 3 的某些部分不兼容,但我们会尽量将它们保持在最低限度,让 Rails 2.x 应用程序转换为 Rails 3 变得非常容易。

我会更担心从 Merb 到 Rails 3。

于 2009-09-16T20:56:20.997 回答
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 灯塔上有一个补丁,但未包含在发布中(因为它被发现,

一旦你有了那个测试套件,只需保持每个 Rails 版本的最新状态(等待几周升级就可以了,只是不要跳过任何版本)。

Yehuda Katz(Rails 核心团队的成员)表示,很可能会有一个过渡版本,包含弃用警告等。

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

于 2009-09-30T20:19:52.080 回答
2

很简单:

Ryan Bates 的精彩截屏视频。

于 2010-09-05T20:14:26.597 回答
1

为了准备你的申请,最好的方式就是 Jared 所说的。跟随 Rails3 开发。

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

对于部署,它不应该带来太多问题。Rails 3 将使用 Rack。因此,您可以使用 mongrel、passenger 或任何服务器/网关来启动它,它不应该给您带来任何问题。

于 2009-09-24T16:05:19.337 回答
1

Rails 3 有一些重大变化,我在这里发布了我将应用程序升级到 Rails 3 的经验:http ://rails3.community-tracker.com/permalinks/5/notes-from-the-field-upgrading-to- rails-3

准备的一个好的开始是迁移到使用 bundler。并对将通过新的 XSS 保护方案的字符串进行非常深入的审查。

于 2010-01-20T21:46:09.227 回答
1

将会有一些自动化的兼容性检查器。此外,请密切关注http://www.railsplugins.org/,以便了解您所依赖的库是否会升级。Rails Core 团队这一次似乎提前向社区发出了很多通知,所以任何积极维护的库都应该是好的。

于 2010-02-19T22:06:31.783 回答
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或其他文件中进行了任何修改。做适当的。

于 2010-11-17T07:06:59.547 回答