2017 年 3 月 12 日,星期日

本周 Rails:发布后大量修复及更多内容。

由 vipulnsward 发布

大家好!

我是来自德里的 Vipul,今天在这个色彩缤纷的 Holi 周末向大家报道 💥
 
让我们看看 Ruby on Rails 世界的最新消息!
大量的修复以及更多内容。

Google Summer of Code 2017

我们非常高兴地宣布,Ruby on Rails 已被接受成为 Google Summer of Code (GSoC) 2017 届的组织之一!

修复

确保本地缓存即使在出错时也能被清除

当中间件链抛出错误时,有时不会被 `LocalCache::Middleware` 捕获。

此更改确保我们能够安全地捕获错误并成功清除本地缓存。

修复带有子目录的 `rake db:schema:load`

先前 `db:schema:load` 在基于子目录的迁移中不起作用。

此更改在 `assume_migrated_upto_version` 中开始使用 `Migrator.migration_files` 来修复此问题。

修复 ActionController::Renderer 中的 malformed asset_url

此更改修复了在使用 `ActionController::Renderer` 渲染模板时 malformed asset_url 的问题。

修复 `has_many` 关联中带有块的 select 不返回新构建的记录

`QueryMethods` 中的 select 方法也是一个可枚举的方法。理想情况下,带有块的可枚举方法应委托给 `CollectionProxy` 上的记录,而不是 scope。

此更改修复了 `has_many` 关联中带有块的 select 不返回新构建记录的行为。

更新 `titlelize` 正则表达式以允许撇号

在之前的修复中,`titlelize` 中的正则表达式被更新为不匹配撇号,以更好地反映转换的性质。

不幸的是,这带来了副作用,破坏了子字符串第一个单词的首字母大写,例如:

>> "This was 'fake news'".titleize
=> "This Was 'fake News'"

此更改通过扩展后行断言以检查撇号以外的单词字符来修复此行为。

修复带有 JSON 数组的 `deserialize`

由于反序列化损坏,JSON 数组数据被以字符串化的形式返回。

此更改修复了反序列化行为。

已弃用

弃用 `Migrator.schema_migrations_table_name`

`SchemaMigration` 模型已被提取,并且在之前使用 `Migrator.schema_migrations_table_name` 的地方改用 `SchemaMigration.table_name`。

现在 `Migrator.schema_migrations_table_name` 已被弃用,取而代之的是 `SchemaMigration.table_name`。

改进

向 AC::Parameters 添加 `reverse_merge` / `reverse_merge!`

此更改向 `ActionController::Parameters` 添加了 `reverse_merge` 和 `reverse_merge!` 方法,类似于其对应的 Hash 方法。

如果驱动程序不支持截图,则不进行截图

`Capybara::RackTest::Driver` 不支持截图。如果我们对 `Capybara::RackTest::Driver` 调用 `#save_screenshot`,它会引发错误。

为防止错误,在此更改之后,如果系统测试中的驱动程序不支持截图,我们将不调用它。

本周有来自 20 位贡献者的许多其他很棒的 pull requests,包括 4 位首次贡献者。感谢大家!

除了代码更改之外,我们在这周和上周还有许多其他好消息。

下周再见!