2012 年 1 月发布的 Rails 3.2 在这一年里进行了一些日常更新——几周前刚发布了 3.2.8 版本。去年,Rails/master 分支已经切换到了 4.0.0.beta 版本,4.0 版本的发布暂时安排在2012 年夏季。虽然没有公布新的发布日期,但Rails 4.0 的组成越来越明朗了:在 Boston RB 的一场演讲里,Rails 的贡献者 Prem Sichanugrist 大概介绍了一下 Rails 4.0 里将发生的变化。主要的特性也罗列在这份版本说明草案里,其中包括:
- 只支持 Ruby 1.9.3
- 强参数
- Queue API
- 缓存改进
去年, DHH 宣布了放弃 Ruby 1.8 的决定,因此 Rails 4.0 不支持 Ruby 1.8 也没什么好奇怪的,距离 Ruby 1.8 的末日又近了一步。
强参数提供了 mass-assignment 保护,其做法是将参数移动到正确的地方:放在控制器里,而非模型里。新的方法在过滤参数时更加方便,哪个参数是允许的也更加明显了。此外,“可以将参数标记为必须的,在预先定义的 raise/rescue 流程中最终轻松流转到 400 Bad Request。”也可以通过插件在Rails 3.2.8 里使用强参数。
ActiveSupport::Queue继承自标准的 Ruby 队列,在一个后台线程里运行队列任务。任务就是一个简单的对象,带有 _run_ 方法。为了让测试更简单,队列系统是可配置的,可以改为同步处理任务。
Cache Digests 是一个新的插件,让 Russian-doll 缓存方案更易维护,这种缓存方案需要手工查找并增加依赖模版的版本号:
深入 Cache Digests:有了这个插件,视图中所有对#cache 的调用都会自动追加一段该模版及其所有依赖的摘要!因此,不再需要手动增加你正修改模版的版本号,或者关心那些依赖于此的其他模版,
Rails 4 还将支持 HTTP/1.1 PATCH 方法:
多个扩展了 Hypertext Transfer Protocol(HTTP)的应用程序需要一种特性来进行部分资源修改。现有的 HTTP PUT 方法只允许完整替换文档。[RFC 5789] 添加了一个新的 HTTP 方法——PATCH,用它可以修改已有的 HTTP 资源。
PATCH 和 PUT 一样,都会被映射为 _update_ 方法,因此不会破坏向后兼容性。 Rails Issue Tracker 上的讨论中有更多关于其动机和结果的信息。
其他的新特性和改变包括导出Schema 的缓存、 PostgreSQL 数组支持、用来清理重复路由的 Routing Concerns 以及对 ActiveRecord::Relation 的更新。
新版本一如既往地祈免了一些过时的特性。版本说明草案里已经包含了一份祈免组件和方法的清单。其中一些东西只是移到了自己的gem 里,比如ActiveRecord::SessionStore 和ActiveResource。Prem Sichanugrist 在他的访谈里概述了新的祈免策略:Rails 4.0 一经发布,Rails 3.1 就将完成自己的使命,一些3.2 的特性会带有祈免警告,这些特性会在Rails 4.1 版本中被移除。这应该能实现3.2 到4.0 的平滑升级,不会带来大的风险。
目前还没有发布Rails 4.0 的RC 版本,但应该会在圣诞前发布。
查看英文原文: Upcoming Rails 4.0 Release Drops Ruby 1.8 Support, Improves Background Jobs, Caching And More
评论