星期五,2017 年 1 月 13 日

本周 Rails 动向:时间、持续时间修复等

由 vipulnsward 发布

新年快乐(又一年)!外加一个 星期五13 号 👻

我是 Vipul,为您带来本年的第二周最新动态,从 目前情况 来看,本周将非常忙碌

感谢所有 27 位贡献者,特别感谢首次贡献的 4 位朋友。加油干!

以下是本周 Rails master 最相关的更改。

改进

自 Ruby 2.5 起,常量查找不再回退到顶级常量

由于 顶级常量查找 已在 Ruby 2.5 中移除,因此 Rails 对其自身的相关更改进行了处理,以便我们依赖于范围适当的常量,而不是依赖于回退查找。

修复

修复 pool_from_any_process 以使用最新规范

如果某个进程分叉多次,ActiveRecord 连接池将为一个进程获取最旧的连接规范,而不是最新的规范。

对于单个进程,不会出现这个问题,但是,如果您要多次分叉进程,将会返回错误的规范,并将使用错误的连接。

此更改通过反转规范名称的列表来修复此问题,以便我们可以获取最新的规范,而不是最旧的规范。

让时间回溯适用于 Time/Date/Datetime 的子类

以前,在使用时间回溯方法(如 travel_to 等)并且对 e.g. Time 的子类的 now 进行调用时,它总是返回 Time 的实例,而不是返回子类的实例。

此更改修复了我们返回实例的方式,以便我们始终使用正确的类进行返回。

修复同时使用月份和年份解析 Duration 时的不一致性

以前,以下代码可能会失败或成功,具体取决于当前时间。

ActiveSupport::Duration.parse(2.months.iso8601) == 2.months  
ActiveSupport::Duration.parse(3.years.iso8601) == 3.years

此更改修复了解析不一致性,以便此比较不再失败。

移除

弃用反射的 class_name 选项以接受一个类

class_name 作为反射的选项的想法,是可以传入一个字符串并使用延迟自动加载类。

直接使用类,如

belongs_to :client, class_name: Customer

这会过早加载模型,从而创建可能的循环依赖关系。

此选项现已弃用,请改传类名称的字符串。

总结

以上就是 Vipul 提供的所有内容。希望你喜爱此版本。

如果你还没有开始制定 RailsConf 提案,那么现在只有 6 天时间来 提交一份精彩演讲