Ruby on (Guard)Rails

主要观点:作者在不同规模的 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。
  • 这些工具大多有免费版本,重要的是使用一些工具来提高代码质量,完美不是目标,更好的部分改进也有价值。
阅读 18
0 条评论