大家好!
我是 Vipul,本周将带你了解 Rails 代码库中的变化。
Rails World 征稿现已开放
此征稿持续到 6 月 16 日,议程计划在两个主题上进行 26 场演讲,并且最多有六场研讨会。请阅读完整公告了解更多详情并提交你的提案!
引入 ActiveRecord.disconnect_all! 以关闭来自连接池的所有连接
此更改引入了 ActiveRecord::Base.connection.disconnect!
的多数据库感知版本。
如果我们尚未连接,它还避免连接到数据库。
这有助于在 establish_connection
已使用后,重置多数据库应用程序中的状态。
针对范围进行优化的 where 查询,其中开头和结尾相同
此修复程序优化了 where 查询,使其适用于开头和结尾值相同的范围。例如,执行 User.where(id: 2..2)
时。
# Before
SELECT `users`.* FROM `users` WHERE `users`.`id` BETWEEN 2 AND 2
# After
SELECT `users`.* FROM `users` WHERE `users`.`id`=2
很好用且有效!
确保 curl 在生成的 docker 镜像中可用
Rails 生成的应用程序的 dockerfile 模板现在默认包含 curl
包。当 docker 镜像与 MRSK 一起用于部署时,这对于运行状况检查是必需的,而MRSK 则使用 curl
。
将 PostgreSQL 索引中的 INCLUDE 列作为字符串返回
在 https://github.com/rails/rails/pull/44803 中引入了对 PostgreSQL 的 INCLUDE
列的支持。此更改确保包含内容返回字符串而不是符号,以便保持与 columns
返回的内容相同。
丢弃可能残留在事务中的连接
如果在 yield 提升的调用之后回滚失败,则连接会在 within_transaction
中被丢弃。这样做是为了防止在回滚实际失败的情况下连接残留在事务中。
此更改导致在以下附加的情况下丢弃连接,其中连接可能残留在事务中
通过抢救上述故障并丢弃连接来实现。
允许将列大小传递给迁移生成器
此提交允许将 size
属性传递给 Rails 迁移生成器,因此在生成迁移文件后不必手动将其添加到迁移文件中。
# Before
rails generate migration CreateAuthor name:text{65535}
# After
rails generate migration CreateAuthor name:text{medium}
这生成包含大小属性的迁移
class CreateAuthor < ActiveRecord::Migration[7.1]
def change
create_table :authors do |t|
t.text :name, size: :medium
end
end
end
内容安全政策:添加 :unsafe_hashes 映射
此更改为 unsafe_hashes
添加了对应的映射,现在允许我们在 CSP 配置中使用 :unsafe_hashes
而不是 'unsafe-hashes'
。
Rails.application.configure do
config.content_security_policy do |policy|
# ...
policy.script_src :self, :strict_dynamic, :unsafe_hashes,
"'sha256-lo7ZdP6kFds+wf1WMWvn7MhcFVFJV44kAXODRevzRZ8='" # javascript:false
# ...
end
# ...
end
这允许我们正确使用内联事件处理程序,它过去会在错误键 unsafe-hashes
上失败,因为该键过去没有得到正确支持
您可以在 这里 查看完整变更列表。
过去一周有 20 位贡献者 加入到 Rails 代码库中!
下期再见!
订阅,我们将每周给您发送更新信息。