现在,Rails 2.3 已进入发布候选阶段,有些人力的开发会转向 Rails 3.0。随着该活动的升温,是时候开始让你们了解 Rails 源代码的 3.0 版本的动态了。我仍然会发布独立的“此周动态之外部版本”信息,重点关注 Rails 2.3,这样你就可以明确现在可以更新哪些更改,哪些更改还在比较遥远的未来。
12 月份发布的 公告中基于 Rails 3 的愿景:我们正在将 Merb 的一些主要概念引入 Rails,包括
Rails 3 承诺大幅推进 Ruby Web 框架的最新进展,但同时还提供从 Rails 2。x 和 Merb 1。× 的迁移路径。
GitHub 上的 Rails 主项目中的 Rails 3.0 分支是了解动态的地方
git clone git://github.com/rails/rails.git
git checkout 3-0-unstable
正如分支名称所暗示的,这里仍然是一个相当实验的地方:你可能不想立即将其推出用于生产应用程序。但这是一个测试的代码(同时利用持续集成保持该状态),并且由于 Yehuda Katz、Joshua Peek 及其他人的努力,其中已包含来自 Rails 2.x 的重大更改。到目前为止,这些更改主要集中在清理和改进 Rails 内部,而不是在添加新功能上。
Action Dispatch 是一个新的 Rails 组件,它存在于 Action Pack 中(与 Action Controller 和 Action View 结合在一起)。Action Dispatch 负责与分发请求有关的所有处理:请求和响应处理、HTTP 状态代码、文件上传、URL 和参数解析、会话存储,等等。
Action View 内部有很大的变化。总体目标是清理多年来建立过的一堆特殊案例和额外的钩子,并使所有对 Action View 的调用者使用单个统一的入口点。代码清理与 Action View 源代码的一些重新排列结合在一起,以便更容易找到功能位。这是一项重大的努力;如果你有兴趣详细了解重构,可以在 Yehuda 的博客 上阅读。
一种处理回调的新方法消除了对运行时迭代回调列表的需要,并极大地提高了这段代码的执行速度。虽然这是一种可能会对其本身产生微小优化效果的微优化,但我们的希望是:通过尽可能小心地优化尽可能多的热点,我们能够在页面创建和交付方面获得明显的整体加速——即 web 框架的重点所在。
很明显,从我们今天所取得的成果和 Rails 3.0 的愿景之间还存在很大的差距。我们非常幸运地拥有一支卓越的核心编程团队,他们投入了大量时间来实现这一目标。过渡期间的目标仍然是在五月的 RailsConf 之前推出 Rails 3.0 的 beta 版。你可以通过和早期的 Rails 版本相同的方式提供帮助:下载源代码,开始在你的应用程序中对其进行测试,并将你自己的创意和补丁提交给 Rails Lighthouse。多年来,Rails 一直是数千名开发人员共同努力的成果,而 Rails 3.0 也不会在此方面有所不同。