2015 年 9 月 26 日,星期六

本周 Rails:GSoC,性能改进和错误修复!

发布者:marcelmorgan

大家好!我是 Marcel(来自 Marcel),在 Andy(欢迎!)的协助下,给大家带来又一周的 Rails 新闻。

Google Summer of Code 2015

2015 年 Google Summer of Code 项目的第四年圆满结束,在 Asset Pipeline(性能和…源映射!)、Web Console(浏览器扩展)、Rails 测试套件(回归测试选择)、开发设置(事件文件系统监控)以及内部重构(cookie)等领域都取得了出色的成果。特别感谢 Google、导师和同学们让这一切成为可能。

本周Rails贡献者

本周有 46 人为 Rails 贡献代码,其中包括 7 位首次贡献者!如果您有兴趣成为贡献者,可以查看 issues 列表。

新功能

介绍 Active Record 的 ignored_columns

这样做的用例之一是忽略那些临时的列。当使用在线 schema 变更工具(如 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 的参数和行为与 ActiveRecord::Calculations 中定义的其他聚合方法(countaverageminimummaximum)保持一致。

修复 MySQL 未运行时出现的静默失败

没有什么比静默失败更令人沮丧的了。此修复处理了在运行 rake db:structure:load 且未安装 MySQL 时发生的错误。以前没有任何输出。

Active Record:为时间戳属性赋值时使用数据库精度

时间戳列的精度可能低于 Ruby 时间戳。这会影响小数秒在数据库中的存储方式。为了解决这个问题,在为时间戳属性赋值时使用了列的精度。

修复预加载 Active Record 模型时 unscoped 的错误使用

预加载使用 unscoped 的关联时,会丢失 unscoped 部分。

总结

以上就是本周 Rails 的全部内容。一如既往,实际的更改比我们在此处能涵盖的多得多,但请随时 自行查看

下次再见!