大家好,周五快乐!我是Vipul,带来本周Rails的最新更新。我们开始吧。
改进Active Record迁移文档
Rails Foundation文档团队将继续改进Guides的各个领域。此拉取请求更新了Active Record迁移文档,以进行各种添加、改进等。
向ActiveRecord::Base添加.shard_keys、.sharded?和.connected_to_all_shards方法
此更改添加了.shard_keys、.sharded?和.connected_to_all_shards方法,以开始返回模型的分片信息。
class ShardedBase < ActiveRecord::Base
self.abstract_class = true
connects_to shards: {
shard_one: { writing: :shard_one },
shard_two: { writing: :shard_two }
}
end
class ShardedModel < ShardedBase
end
ShardedModel.shard_keys => [:shard_one, :shard_two]
ShardedModel.sharded? => true
ShardedBase.connected_to_all_shards { ShardedModel.current_shard } => [:shard_one, :shard_two]
在Active Storage代理下载失败时使缓存失效
Active Storage中的Proxy控制器在流式传输之前就设置了缓存头。在某些情况下,在将第一个字节发送给客户端之前,文件下载可能会失败。在这些情况下,此更改将使缓存失效,并在关闭流之前返回更好的响应状态。
延迟生成断言失败消息
Minitest支持将失败消息作为可调用对象传递,这使我们能够延迟生成失败消息。其中一些失败消息可能生成成本较高,尤其是在检查非常大的对象或访问proc的AST时。此更改通过传递可调用对象来延迟生成失败消息。
使“rails g scaffold”在没有字段的情况下生成符合RuboCop的代码
当没有字段时,我们使用rails g scaffold,生成的代码不符合RuboCop规范。
此更改使其符合规范,方法是:
修复alias_attribute以忽略父类中定义的方法
定义常规属性时,继承的方法不会被覆盖。然而,在定义别名属性时,不会考虑继承的方法。此更改修复了alias_attribute,使其能够正确忽略父类中定义的方法。
您可以在此处查看所有更改。
上周,我们有26位贡献者为Rails代码库做出了贡献!
下次再见!
订阅以通过邮件获取这些更新。