主要观点:作者在不同规模的 Ruby 应用工作经历中,发现 Ruby 适合快速开发但易出错,介绍了解决这些问题的方法,包括使用 linters(如 rubocop 等)、tests(如 rspec 等)、monitoring(如 Sentry 等)和 types(如 Sorbet)来提高代码质量和开发效率。
关键信息:
- 作者曾在 Homebrew、AllTrails、GitHub、Workbrew 等 Ruby 项目工作。
- Ruby 特点:适合快速开发但易出错,如常见的“nil:NilClass (NoMethodError)”错误在编译型语言中会被编译器捕获,而在 Ruby 中较难在运行时捕获。
解决问题的方案:优化目标包括开发者幸福、客户用户幸福、速度质量平衡、机器人严谨性与人类同理心,具体措施如下:
- linters:帮助在本地开发或自动化测试环境中捕获问题,如 rubocop、erb_lint 等,可添加到 Gemfile 中并进行配置和调整。
- tests:需要开发者编写额外代码来捕获问题,如 rspec、simplecov 等,可添加到 Gemfile 中以提高测试效率。
- monitoring:在生产环境中帮助捕获问题,如 Sentry、Logtail 等,添加到 Gemfile 中。
- types:选择类型系统,如 Sorbet,可添加到 Gemfile 中,使用严格模式可在开发和测试环境中捕获类型问题,在生产环境中报告但非致命。
- 强调作弊是可以的,设置严格的规则后可适当违规以提高代码质量和用户满意度。
重要细节:
- 在使用 linters 时,可根据需要启用或禁用规则,且可在每行基础上禁用,同时应添加注释说明原因。
- 在使用 tests 时,不同工具如 rspec、parallel_tests 等可提高测试效率和覆盖率,CodeCov 可集成并查看覆盖率。
- 在使用 Sorbet 时,需要改变写 Ruby 的方式,起初可能不适应,但能减少生产环境中的错误并减少测试量。
- 对于单个开发者的非关键项目,可不使用 Sorbet。
- 这些工具大多有免费版本,重要的是使用一些工具来提高代码质量,完美不是目标,更好的部分改进也有价值。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。