自上个版本的 Ruby on Rails 发布不到一年,在超过 4000 次提交之后, Rails 3.0 的 beta 版已经发布。
版本号从 2.3 升至 3.0 绝对当之无愧,因为 Rails 3 并不仅仅是一些小修小改,它还将 Rails 2.3 和先前的竞争者 Merb 合并起来,将各自的优点合二为一:
Merb 团队加入后带来的都是些很棒的主意,包括关注到框架中晦涩难懂的部分,更快更轻量级的内部实现,以及一些“美味可口”的 API。
除了众多内部实现的清理以外,Rails 3 当然也增添了新的特性。以下摘自发布说明:
- 引入全新的 Router,强调 RESTful 的声明(详见 Yehuda Katz 的介绍)
- 全新的 Action Mailer API,效仿自 Action Controller(详见 Mikel Lindsaar 的介绍)
- 全新的 Active Record 链式查询语言,基于关系代数构建(详见新 API )
- 使用 Unobtrusive JavaScript 助手与 Prototype 或 jQuery 以及其他 JS 框架进行集成(内联 JS 的终结)
- 使用 Bundler 进行显式的依赖管理
安全则是另一个受到重点关注的领域,正如 Yehuda Katz 在接受 SD Times 采访时说道:
我们详细研究了已知现存的安全缺陷,这主要基于 Twitter 上的讨论,以及别人抱怨说:“你们的安全工具现在就是个体力活”。[为了避免跨站脚本缺陷 …] 我们仔细检查了整个 Rails 的内部实现,将所有的 form 标签标记为 safe,这解决了绝大部分的问题,用户就轻省得多了。[…] 现在偶然出现一个 XSS 攻击已经不太可能了。
要了解更多关于 Rails 3.0 的信息,请阅读发布说明,里面详细地介绍了每个变化。Yehuda 还写了篇过去一年的回顾,高屋建瓴地(相比较发布说明而言)对变化进行了总结和概括。 Jeremy McAnally 在博客上开始编写系列文章“将技术和代码迁移到 Rails 3”。系列的第一部分对Rails 经历的变化进行了概要性的介绍,第二部分名为“通往升级之路”。 RubyInside 收集了 36 条 Rails 3.0 相关的链接。
Rails 3.0 能够在 Ruby 1.8.7、Ruby 1.9.2 和 JRuby 上工作,但目前还不能运行在 IronRuby 上。因为目前的 IronRuby 主干(将要发布的 1.0 版本)仅支持 1.8.6,而 Rails 则需要部分 1.8.7 的特性。在 IronRuby 1.0 以后,项目将会切换到对 1.9 的支持上,这样 IronRuby 就能够支持 Rails 3。目前在 IronRuby-core 邮件列表中,尚有人讨论是否在IronRuby 1.0 上增加1.8.7 的特性,来使得Rails 3 可以正常运行。
想要了解是否可以尝试将自己的应用升级到3.0,可以去看看新 RailsPlugins.org 维护的一个插件目录,其中包含了插件对于 Rails 3.0 的兼容情况。
最终版的发布日期尚未宣布。你对 Rails 3 有什么想法?你已经为升级做好准备了吗?
查看英文原文: First Rails 3 Beta Released
评论