2011年5月22日,星期日

Rails 3.1:发布候选版本

作者:David

正如我在 RailsConf 上承诺的那样,我们终于可以发布 Rails 3.1:Release Candidate 了。这是一个非常令人兴奋的版本。我们有三个全新的明星功能,以及更多超赞的改进。首先是明星功能:

Asset Pipeline
3.1 版本最出色的功能是 Asset Pipeline,它由 Sprockets 2.0 提供支持。它使 CSS 和 JavaScript 成为一等公民,并支持正确的组织,包括在插件和引擎中使用。请参阅 我的 RailsConf 主题演讲 以获取完整介绍。它默认使用 SCSS 作为样式表语言,并使用 CoffeeScript 作为 JavaScript 的默认语言。有关此功能的更多文档即将推出。

HTTP 流式传输
这允许浏览器在服务器仍在生成响应时下载你的样式表和 JavaScript。结果是页面加载速度明显加快。这是可选择启用的功能,并且需要 Web 服务器的支持,但流行的 nginx 和 unicorn 组合已准备好利用它。有一个很棒的 关于 HTTP 流式传输的 Railscast,并且 API 文档也非常完善。

jQuery 现在是默认选项
我们已将 jQuery 设置为 Rails 默认附带的 JavaScript 框架,但如果你喜欢,切换回 Prototype 也非常简单。这一切都包含在 jquery-rails 和 prototype-rails gems 中。只需在 Gemfile 中依赖你想要的 gem,它就会正常工作。

其他有用的改进

  • 可回滚的迁移:DRY 迁移,它们知道如何撤销自身。更清晰、更美观的迁移。
  • 可挂载的引擎:引擎现在可以拥有自己的路由和辅助作用域。它们还可以利用 Asset Pipeline(有关此功能的更多文档即将推出)。阅读 关于可挂载引擎的故事(即使资产方面的内容现在已过时)。
  • Identity Map:它默认未启用,因为还有一些 重要的注意事项 仍待解决,但如果你能处理这些问题,它将是减少应用程序触发查询次数的好方法。更快就是更好!
  • 预编译语句:Active Record 现在使用缓存的预编译语句,这对 PostgreSQL 来说在所有情况下都是一个巨大的提升,并且对 MySQL 在复杂语句方面也有提升。
  • Rack::Cache 默认启用:这使得可以使用 HTTP 缓存和 条件 GET 来替代页面缓存(我们稍后会将其提取到一个插件中并从核心移除)。
  • Turn 测试输出在 Ruby 1.9 上:得益于 Turn gem,测试输出更加美观。在 Ruby 1.9 上,新应用程序默认启用此功能。
  • 强制 SSL:使用 force_ssl 保护你的应用程序比以往任何时候都更容易。可以按应用程序或按控制器进行设置。
  • 基于角色的批量赋值保护:attr_protected 现在接受角色,因此更容易处理管理员/非管理员的分割等问题。
  • has_secure_password:极其简单的基于 BCrypt 的密码。现在你没有借口不自己实现身份验证方案了。
  • 自定义序列化器:使用 JSON 或任何你想要的格式序列化对象。

你还可以查看 更长的变更日志,并从 Railscast 获取 视频概览

如果你正在启动一个新应用程序,强烈建议使用 Ruby 1.9.2。Rails 将继续支持 1.8.x 直到 Rails 4.0,但它被认为是遗留选项。Ruby 1.9.x 是大势所趋。赶紧加入,享受巨大的速度提升。

你可以通过 `gem install rails --pre` 命令安装 Rails 3.1:Release Candidate。尽情使用,并请 在 Github 上报告任何 release candidate 问题。如果一切顺利,我们预计在几周内发布最终版本。