2017 年 1 月 6 日,星期五

本周 Rails:新年伊始,提交超过 100 条

由 claudiob 发布

新年快乐!你的假期过得怎么样?收到了什么不错的礼物吗?万一你错过了,Ruby 2.4.0 已于圣诞节发布,所以如果你还没有安装……立即执行 `rbenv install 2.4.0`!

2017 年的第一周,rails/rails 已经收到了超过 100 条提交。祝贺所有 32 位贡献者,特别是首次贡献的 8 位开发者。继续加油!

以下是本周 rails master 最重要的更新。

新增

允许为邮件附件设置自定义内容类型

使用 Action Mailer,现在可以轻松指定附件的内容类型。例如:`mail(body: "\<h1\>Hello\</h1\>", content_type: "text/html")`。

为 ActiveRecord::CounterCache 方法添加了选项

现在,你可以要求 Active Record 在增加、减少、重置或更新计数缓存时更新特定的时间戳列。

当缺少时,将 Rails.env 默认设置为 development

如果你的应用程序没有设置 `RAILS_ENV` 或 `RACK_ENV`,那么 `Rails.env` 的值将回退到 `development`,而不是一个空字符串。

改进

使用 Ruby Refinements 改进 Array#sum

Array#sum 在 Rails 中是通过 Monkey Patch 定义的。Ruby 2.0 引入了 Refinements 以实现更好的封装。这是它们首次在 rails/rails 中使用的 PR。

确保 Rails 4.2 与 Ruby 2.4 兼容

一些测试和代码已得到修复并回溯到 4-2-stable,以便在 Ruby 2.4 上运行 Rails 4.2 不会引发任何错误。 

更改 `duplicable?` 的返回值

在 Ruby 2.4 中,NilClass、FalseClass、TrueClass、Symbol 和 Numeric 都支持 `dup`。为了保持一致性,现在所有这些类别的 `duplicable?` 都将返回 `true`。

修复

将 nil 的 JSON 属性值序列化为 SQL NULL

Rails 5.0 中存储 `nil` JSON 负载的方式发生了一个意外的变化。此修复程序将 `nil` 映射到 SQL `NULL`,与 Rails 4.x 中的情况完全相同。

修复了嵌套命名空间的 Rails 引擎的生成器命令

如果你的 Rails 引擎名称包含连字符,那么这个 PR(修复了命名空间的控制器路径)就是为你准备的! 

更新所有 HTTP 请求上的 `cookies` 助手

这修复了一个回归,之前 cookies 只在 GET 请求上更新。现在,我们将为所有请求更新此助手。

已移除

移除对 MySQL 的支持

MySQL 5.0 早已“生命周期结束”。Rails 现在至少需要 5.1.10 版本。

移除先前已弃用的代码

此时,你应该已经放弃了对 Rake 的 `db:test:clone`、Configuration 的 `serve_static_files` 和 `static_cache_control` 以及 ActiveRecord 的 `uniq`、`uniq!`、`uniq_value`、`insert_sql`、`update_sql`、`delete_sql` 的任何引用。

总结

以上就是 Claudio 本周的更新。希望你喜欢本期内容。现在……让我回去写我的 RailsConf 提案吧……我只剩下 14 天时间来提交一个好的演讲

四月底凤凰城见!