2016 年 9 月 18 日(星期日)

本周 Rails 时刻:🍫 您的巧克力工厂金奖门票 🍫

jonatack 发布

Jon 在此欢迎您来到本周 Rails 时刻!

今天,我们将游览奇妙的**Ruby on Rails 巧克力工厂**,了解它如何制造和测试其无处不在的 Web 应用和开发人员所消费的神奇糖果。

金奖门票在手?出发吧!

欢迎!🎩

本周 Rails 贡献者

本周,26 个美妙的 Umpa-Lumpa 为改进您最爱的糖果想出了妙招,甚至包括首次贡献者!

修复关于不安全 GitHub 来源的 Bundler 警告

如果您升级到 Bundler 1.13,并且使用 **github** 选项在 Gemfile 中指定 Gem 来源,则会在运行 bundle 命令时看到警告。

要修复,您可以在命令行中运行 **bundle config github.https true**。

否则,如果您无法控制 Gemfile 执行的环境,可以像 Rails 现在所做的那样将以下内容添加到 Gemfile:

git_source(:github) |repo_name| do
  “https://github.com/#{​repo_name}​.git”
end

已移植回 5-0-stable。

改进巧克力 🍩🍫

Puma 文档:预加载前断开连接

此 Pull Request 中添加了 **config/puma.rb** 文档,建议在预加载使用主动记录的应用程序时关闭数据库连接。Pull Requestpuma/puma#1001 中的讨论提供了更多详细信息。

改进 assert_response 帮助程序

为了提高编写测试时的效率,如果 **assert_response** 测试失败,Rails 现在会输出实际响应内容,前提是其长度不超过 500 个字符。

修复糖果中的错误 🍬

触摸后清除属性更改

在很好的一篇错误报告之后,此 PR 修复了一个 Rails 5 回归,即在使用乐观锁定时调用 **ActiveRecord#touch**,它会再次将模型保留为非变脏状态,且不包含任何属性更改。

防止常量突变

在对 **request.session_options** 进行修改的控制器测试后,使用 **ActionDispatch::IntegrationTest** 的测试运行失败。结果发现,**ActionController::TestSession::DEFAULT_OPTIONS** 发生突变,随后 **Rack::Session::Abstract::Persisted::DEFAULT_OPTIONS** 也随之突变,导致集成测试继承该值并失败。

此 Pull Request 复制了 AC 默认选项常量以防止突变,并且 提交给 Rack 的 Pull Request 已合并,用于冻结 Rack 默认选项常量,以避免在以后出现此问题。

强制使用 TransactionManager 的正确命名空间

此 Pull Request 修复了问题 #26441:“在调用 reset_transaction 时出现 NameError:未初始化常量 AR::ConnectionAdapters::DatabaseStatements::TransactionManager”。

如何做出贡献?本周的一些范例 🍰

修复测试套件中的警告

运行 Rails 测试套件非常有助于发现可以修复的小型问题。此合并请求解决了测试套件中 2 个警告,而这两个警告仅仅是因为没有用括号包装方法参数而产生。

添加缺失测试

该贡献者注意到当 ActiveRecord::Enum#enum 被调用时没有针对特定后缀进行任何测试,于是添加了一些测试。

完善 Rails 指南

更好的文档永远受欢迎。看到 问题 #26286 后,该贡献者帮助完善了 render partial ‘as’ 选项的文档。

添加一个错误报告模板

提交信息说明了一切:“我创建此模板以单独测试迁移,我认为对于未来希望避免过分研究 Rails 迁移测试的人来说此模板应该非常有用。”

删除重复的代码

elsif 分支正好是其之后的 else 分支的重复。您绝不会相信接下来发生了什么 😮。

如何继承一个想象力无穷的世界 🍭

今天的旅程到此为止,但真正的旅程才刚刚开始。

从今天开始,选择 Rails 代码库 中的任意文件并阅读它。

在主分支上选择一个 未解决的问题,然后使用 Rails 错误报告模板 尝试重现错误。

仔细阅读 参与 Ruby on Rails 指南。设置您的 Rails 测试环境。

选择一个 未解决的合并请求 并对其进行测试或审核。

您会惊讶于采取这样的小步骤能有怎样的收获!

尽情享受美妙的巧克力 – 下周再见。