星期六,2015 年 9 月 26 日

Rails 本周动态:GSoC、性能改进还有错误修复!

作者 marcelmorgan

大家好!这是 Marcel,有 Andy 的帮助(欢迎!)带来了 Rails 又一周的新闻。

2015 年 Google Summer of Code

第四年参与 2015 年 Google Summer of Code 已结束,资产管道(性能和…源映射!)、网络控制台(浏览器扩展)、Rails 测试套件(回归测试选择)、开发设置(事件文件系统监控)和内部重构(cookie)领域的工作出色完成。特别感谢 Google、指导师和学生,使这一切成为可能。

本周 Rails 贡献者

46 人贡献了本周的 Rails,包括 7位首次贡献者!如果您有兴趣成为一名贡献者,可以看一下 问题列表。

新功能

引入 Active Record ignored_columns

一个用例是忽略临时列。在使用 lhmpt-online-schema-change 等在线架构更改工具时,可能会发生这种情况。

外键现在在 create_table DSL 中受支持

不仅将 foreign_key 作为选项传递给 create_table DSL 的 references 方法更加方便,而且它生成的 SQL 也更高效。

改进

改进 Active Record save 及类似方法的性能

通过利用内部代码改进(MutationTracker 对象),Active Record 的 save 及类似方法已收到性能提升的报告。

更改 assert_difference 以返回 yield 块的结果

这样我们就可以对返回的值执行新的断言,而不用将其分配给外部变量或以其他方式将后续断言包装在 assert_difference 块中。

修复

修复 AR::Calculations#sum 的参数

现在 #sum 的参数和行为与其他集合方法(countaverageminimummaximum)一致,这些方法在 ActiveRecord::Calculations 中定义。

修复 MySQL 未运行时的静默故障

没有比默默的故障更令人沮丧的事情了。此修复程序可以处理运行 rake db:structure:load 时遇到的错误,以及未安装 MySQL 的问题。之前没有输出。

活动记录:在为时间戳属性分配值时使用数据库精度

时间戳列可以具有比 Ruby 时间戳更低的精度。这会影响如何在数据库中存储几分之一秒。为解决此问题,在为时间戳属性分配值时使用了列的精度。

修复预加载活动记录模型时忽略的 unscoped 用法

预加载使用 unscoped 的关联导致 unscoped 部分被删除。

总结

这就是本周 Rails 更新的全部内容。与往常一样,虽然由于篇幅限制,这里无法涵盖所有更改,但欢迎大家 自行查看

下次再见!