2016 年 12 月 10 日星期六

本周 Rails 快讯:yarn、webpack、BIGINT PK 等精彩内容!

Posted by chancancode

各位好,我是 Godfrey,现从俄勒冈州的波特兰向大家报道。本周对我来说可谓是喜忧参半 —— 一方面,受 这场暴风雪的影响,波特兰度过了一个糟糕透顶的星期;但另一方面,Rails 却迎来了许多激动人心的改变。那么,这些改变是否能够让我们一扫阴霾呢?我想还是让我们一起了解一下这些改变,然后由您来决定吧!

“Yarn 很好用。Yarn 很管用。”

上周,我们提到 Rails 5.1 正在加入一个 –yarn 选项。该选项现在已经正式成为默认选项:今后每新建一个 Rails 应用,都会自动将其设置为使用 yarn。值得注意的是,yarn 包 现在安装到了 vendor/node_modules 目录 中。

基本的 webpack 集成

既然我们提到了 JavaScript,那么自然也要谈一谈资源捆绑。Rails 5.1 将通过 –webpack 选项为 webpack 提供一流的支持。这个选项还处于相当早期的实验阶段,因此一定要尝试一下,并 为改进它贡献一份力量

将默认主备键更改为 BIGINT

朋友不会让朋友将 INT 用作主备键——您的应用在您不知情的情况下可能会达到 Webscale™ 级别,导致主备键列溢出,带来很多麻烦。为了帮助您走上正确的道路,Rails 5.1 将默认使用 BIGINT 作为 MySQL 和 PostgreSQL 中的主备键列。

新增内容

引入 ActiveRecord::NotNullViolation 错误

从此请求合并那天起,如果您的模型因 NOT NULL 约束而保存失败,Rails 将引发 NotNullViolation 错误(而非通用的 StatementInvalid 错误),以便您可以救援此错误并恰当进行处理。

改进

将 RSpec 集成测试的速度提高了 40%

此修补程序修复了这样一个问题:在集成测试之间不必要地重新编译模板,导致速度显著下降。

修复

幂等的 after_commit 回调

以前,某些竞争条件可能导致您的 after_commit 回调的触发频率高于预期。此修补程序尝试更准确地跟踪数据库中实际发生的工作,以确保仅在适当时机触发您的钩子。

在模板中允许可变名 block

您是否尝试在模板中使用名为 block 的变量?如果您这样做,您可能会看到 Rails 发出的一个非常奇怪的错误。以后情况不再如此!通过此修补程序,您将能够在没有问题的情况下完成该操作。

subclassesdescendants 中排除单例类

Ruby 2.3.0 中的一项更改意外更改了 Active Support 的 Class#subclassesClass#descendants 方法的行为,使它们包括单例类。此补丁恢复了以前的行为,并使 Ruby 的不同版本之间的行为再次保持了一致。

总结

本周的 Rails,就聊到这里!还有许多其他出色的贡献,因此请随时 亲自查看

下周见!