2016年10月8日,星期六

本周 Rails:为 Ruby 2.4 做准备

由 chancancode 发布

You are reading This Week In Rails!

本周 Rails 贡献者

本周新闻通讯的内容由撰写这些内容的19位作者赞助!

Ruby 2.4 中 Fixnum 和 Bignum 已弃用

即将发布的 Ruby 2.4 版本的一个显著变化是将 FixnumBignum 合并为一个 Integer 类。在此更改之后,旧类最近已被弃用

此拉取请求通过功能检测来避免触发这些弃用警告。如果您维护的代码引用了这些常量,您可能也想在您的项目中采用这种模式!

删除 json gem 依赖

与整数类合并相关:引用 rb_cFixumrb_cBignum C 常量的原生扩展也需要更新。

流行的 json gem 就是其中一个原生扩展。幸运的是,所有现代版本的 Ruby 都内置了 json 库。如果您针对的是 Ruby 1.9 及以上版本,您可以直接删除 json gem 作为依赖项

改进

避免增加类序列号

早在五月份,就报告了一个回归,即 Rails 5 在每次请求时都会使 Ruby 的 class_serial 无效。这个内部计数器用于使类级别的方法缓存失效。

这个问题被追溯到使用了 instance_exec。虽然有希望在 Ruby 本身中放宽此限制,但此补丁至少暂时在 Rails 端解决了问题。

加速 Time.zone.now

过去,Time.zone.now 比标准的 Time.now 慢很多(据说慢25倍)。这个拉取请求显著缩小了差距。

修复

避免将 ruby 关键字编译到模板局部变量中

您是否尝试过在渲染部分视图时注入名为“class”或“module”的局部变量?这行不通,并且会给您一个相当奇怪的错误。

此拉取请求通过跳过无效的局部变量名来避免该错误,同时仍允许通过 local_assigns 访问它们。

您可以在Peter 的博客文章中阅读有关此问题的更多信息,以及此拉取请求背后的故事。

已移除

删除未文档化的 Action Cable“faye 模式”

您是否知道 Action Cable 有一个未文档化的“faye 模式”?

不知道?很好。因为它现在已经被删除了!

总结

本周就到这里了,和往常一样,有很多我们无法全部介绍的更改,请随时在此查看!

下周再见!