Jon 在此欢迎您来到本周 Rails 时刻!
今天,我们将游览奇妙的**Ruby on Rails 巧克力工厂**,了解它如何制造和测试其无处不在的 Web 应用和开发人员所消费的神奇糖果。
金奖门票在手?出发吧!
本周,26 个美妙的 Umpa-Lumpa 为改进您最爱的糖果想出了妙招,甚至包括首次贡献者!
如果您升级到 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。
此 Pull Request 中添加了 **config/puma.rb** 文档,建议在预加载使用主动记录的应用程序时关闭数据库连接。Pull Request 和 puma/puma#1001 中的讨论提供了更多详细信息。
为了提高编写测试时的效率,如果 **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 默认选项常量,以避免在以后出现此问题。
此 Pull Request 修复了问题 #26441:“在调用 reset_transaction 时出现 NameError:未初始化常量 AR::ConnectionAdapters::DatabaseStatements::TransactionManager”。
运行 Rails 测试套件非常有助于发现可以修复的小型问题。此合并请求解决了测试套件中 2 个警告,而这两个警告仅仅是因为没有用括号包装方法参数而产生。
该贡献者注意到当 ActiveRecord::Enum#enum 被调用时没有针对特定后缀进行任何测试,于是添加了一些测试。
更好的文档永远受欢迎。看到 问题 #26286 后,该贡献者帮助完善了 render partial ‘as’ 选项的文档。
提交信息说明了一切:“我创建此模板以单独测试迁移,我认为对于未来希望避免过分研究 Rails 迁移测试的人来说此模板应该非常有用。”
此 elsif 分支正好是其之后的 else 分支的重复。您绝不会相信接下来发生了什么 😮。
今天的旅程到此为止,但真正的旅程才刚刚开始。
从今天开始,选择 Rails 代码库 中的任意文件并阅读它。
在主分支上选择一个 未解决的问题,然后使用 Rails 错误报告模板 尝试重现错误。
仔细阅读 参与 Ruby on Rails 指南。设置您的 Rails 测试环境。
选择一个 未解决的合并请求 并对其进行测试或审核。
您会惊讶于采取这样的小步骤能有怎样的收获!
尽情享受美妙的巧克力 – 下周再见。