嗨!我是 Vipul,将本周 Rails 代码库变更的最新信息提供给您。
减少 ActiveSupport::Callbacks 使用的内存
以前,与子类共享的回调不会在它们之间共享在 before/after 过滤器中生成的 proc。这也是惰性生成的,因此会在引导应用程序后导致内存增长。
此更改添加了在 before/after 块中复用这些内容,将从引导到请求后提供服务时的内存增长减半。
该内容重新添加了对使用具有非列支持属性的枚举的支持,同时仍可防止枚举属性名称中出现拼写错误。当使用具有非列支持属性的枚举时,该属性必须先使用显式类型进行声明。
例如
class Post < ActiveRecord::Base
attribute :topic, :string
enum topic: %i[science tech engineering math]
end
在 NumberToHumanSizeConverter 中处理负数
此拉取请求添加了对 number_to_human_size
的支持以处理负数。
# Before
helper.number_to_human_size(-1234567)
# => "-1234567 Bytes"
# After
helper.number_to_human_size(-1234567)
# => "-1.18 MB"
仅针对特定数据库转储架构,以针对多个数据库执行回滚/上升/下降任务
在此更改之前,rails db:migrate:primary
(和 rails db:up:primary
、rails db:down:primary
)针对所有数据库转储架构文件,即使这不是必需的。此更改修复了此内容,以仅对特定数据库执行转储。
例如,当转换 "3,50"
时,按预期工作,而不是引发错误。
此更改为 BroadcastLogger
类添加了对 dup
的正确支持,以前只调用 dup
不够用。
修复 StrongParameters#extract_value 以包含空白值
此更改修复了 extract_value
,以使其也能工作并保留空白值。
params = ActionController::Parameters.new(tags: "ruby,rails,,web")
params.extract_value(:tags) # => ["ruby", "rails", "", "web"]
这有助于修复一个错误,其中使用 url_helpers
会生成无效的 URL(如果记录的第二个复合主键为空)。
在 ActiveRecord::Persistence.delete 方法中忽略无效的 PRIMARY KEY 值
当将一些无效的主键值传递给 ActiveRecord::Persistence.delete
方法时,Active Record 仍然会执行 DELETE
查询,即使不需要它。例如,
irb(main):001> User.delete([])
User Delete All (0.6ms) DELETE FROM "users" WHERE 1=0
=> 0
此更改现在会跳过不必要地运行该查询。
此变更修复了在捆绑环境中使用 rails-ujs
的问题(使用 esbuild 等),其中 rails-ujs
无法正确自动启动,因为其 start
方法被调用了两次。
您可以在 此处 查看所有更改列表。
过去一周,有 34 位贡献者 为 Rails 代码库做出了贡献!
敬请期待下次更新!
订阅 以接收邮件形式的这些更新。