大家好,我是来自俄勒冈州波特兰的 Godfrey。本周对我来说喜忧参半——一方面,波特兰因为风暴经历了一周糟糕的天气;另一方面,Rails 迎来了一系列令人兴奋的变动。这样算扯平了吗?我想我们会逐一了解这些变动,然后由你们自己来判断!
上周,我们提到 Rails 5.1 将新增一个 –yarn 选项。现在,这个选项被提升为默认设置:每个新的 Rails 应用都将默认配置为使用 yarn。另外值得注意的是,yarn 包现在将安装到 vendor/node_modules 目录中。
说到 JavaScript,资源打包方面也得到了一些关注。Rails 5.1 将通过 –webpack 选项获得对 webpack 的一等支持。这仍然是一个非常早期的尝试,所以一定要试用并帮助改进它。
朋友不会让朋友使用 INT 作为主键——你的应用可能在你意识到之前就达到了 WebScale™,当你的主键列溢出时会带来很多麻烦。为了帮助你走上正确的道路,Rails 5.1 将默认在 MySQL 和 PostgreSQL 中为主键列使用 BIGINT。
ActiveRecord::NotNullViolation 错误根据此拉取请求,如果你的模型因 NOT NULL 约束而未能保存,Rails 将会抛出一个 NotNullViolation 错误(而不是一个通用的 StatementInvalid 错误),这样你就可以捕获该错误并适当地处理它。
此补丁修复了一个在集成测试之间不必要地重新编译模板的问题,从而显著提高了速度。
after_commit 回调以前,某些竞态条件可能导致你的 after_commit 回调触发的次数比预期要多。此补丁试图更准确地跟踪数据库中实际发生的工作,以确保你的钩子仅在适当的时候被触发。
block 的变量你尝试在模板中使用名为 block 的变量了吗?如果试过,你可能会看到 Rails 产生一个非常奇怪的错误。现在不会了!通过此补丁,你可以毫无问题地执行此操作。
subclasses 和 descendants 中排除单例类Ruby 2.3.0 的一项更改意外地改变了 Active Support 的 Class#subclasses 和 Class#descendants 方法的行为,使其包含单例类。此补丁恢复了之前的行为,并(再次)使不同版本的 Ruby 保持一致。
本周 Rails 内容就这些!还有许多其他优秀的贡献,所以请随意自行查看!
下周再见!