大家好!
我是Vipul,为您带来本周Rails代码库的变更。
Rails World 论文征集现已开放
本次CFP(征文启事)开放至6月16日,议程将包含两个会场共26个演讲,以及最多六个研讨会。请阅读完整的公告以获取更多详情并提交您的提案!
引入 ActiveRecord.disconnect_all! 以关闭连接池中的所有连接
此更改引入了一个支持多数据库的 ActiveRecord::Base.connection.disconnect! 版本。
如果我们尚未连接,此方法还会避免连接到数据库。
在 establish_connection 使用后,这对于重置多数据库应用程序的状态可能很有用。
优化了首尾相同的范围查询
此修复优化了首尾值相同的范围查询。例如,在执行 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
简洁而有效!
确保生成的docker镜像中包含curl
Rails 生成的应用程序的 dockerfile 模板现在默认包含 curl 包。这对于使用 MRSK(一个使用 curl 的工具)部署 Docker 镜像时的健康检查是必需的。
将PostgreSQL索引中的INCLUDE列作为字符串返回
PostgreSQL 的 INCLUDE 列支持已在 https://github.com/rails/rails/pull/44803 中引入。此更改确保 include 返回字符串而不是符号,以保持与 columns 返回的行为一致。
丢弃可能仍处于事务中的连接
在 yield 调用引发错误后回滚失败时,连接会在 within_transaction 中被丢弃。这样做是为了防止在回滚实际失败时连接仍处于事务中。
此更改导致在连接可能仍处于事务中的以下额外情况下丢弃连接:
通过捕获上述失败并丢弃连接。
启用向迁移生成器传递列大小
此提交允许将 size 属性传递给 Rails 迁移生成器,这样在生成迁移文件后就不需要手动添加它了。
# Before
rails generate migration CreateAuthor name:text{65535}
# After
rails generate migration CreateAuthor name:text{medium}
这将生成一个包含 size 属性的迁移
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 键而出现的错误会阻止其正常工作。
您可以在此处查看所有更改的完整列表:https://github.com/rails/rails/compare/@%7B2023-05-05%7D...main@%7B2023-05-12%7D。
上周我们有20位贡献者参与了 Rails 代码库的开发!https://contributors.rubyonrails.org/contributors/in-time-window/20230512-20230519
下次再见!
订阅以通过邮件获取这些更新。