本周 Edge 的工作相当繁忙,但并没有太多新功能可以指出。这是好事:在这个发布周期的这个阶段,团队正专注于完善细节,以便在各种不寻常的情况下都能保持稳定。这也是你的帮助至关重要的时刻:如果某个更改影响了你的应用程序,而你没有告知任何人,你就不能期望得到修复。你不必在 RC1 上全程运行你的应用程序,但请检查 Edge Rails,试用一下,并报告任何似乎损坏的内容。如果你包含测试来展示预期行为,将获得加分,如果你提交补丁,将获得超级加分。
一系列的提交解决了视图渲染的一些问题。最终结果是提高了开发模式下视图渲染的性能,并且恢复了生产模式下的模板重新编译(这样你就可以更改视图并看到更改,而无需重新启动整个服务器)。这项工作的一部分是从 rails-dev-boost 移植过来的,如果你想了解这里所做的工作,最好的方法是阅读 Lighthouse 票证。
对翻译 API 的一项更改使得在局部视图(partials)中编写键翻译更加容易且重复性更少。如果你从 people/index.html.erb 模板中调用 translate(".foo"),你实际上是在调用 I18n.translate("people.index.foo")。如果你不以句点作为前缀来键,那么 API 就不会进行作用域限定,就像以前一样。
NestedAttributes 的 API 已被更改,以便更好地与现有关联配合使用。如果你只是将此用于嵌套模型表单,这些更改很可能对你来说是透明的,但如果你深入研究了内部机制,你应该查看 Lighthouse 中的讨论以及提交中的代码。
使用 script/generate scaffold 生成的控制器的自动生成的函数式测试现在使用 to_param 而不是 id 来标识记录,这应该使它们在随时间推移的 fixture 更改方面更具弹性。
对 TimeWithZone 进行了一些内部更改,使其代码更具可读性和效率。一项更改影响了 API:TimeWithZone#to_formatted_s 是 TimeWithZone#to_s 的别名。
打破了一个长期存在的政策,本周实际上对内置的复数形式列表进行了一项更改:Rails 现在可以正确处理 database/databases。请记住,愚蠢的一致性是小人物的恶魔,请不要将此视为重新打开旧的 票证 10919 的邀请。该政策仍然是,你可以在应用程序的初始化脚本中添加屈折(inflections),如果你需要这样做的话。