您应该避免的 10 个共轨编程错误

已发表: 2023-08-22

Ruby on Rails(通常称为“Rails”)真正改变了 Web 应用程序开发的范式,强调其“约定优于配置”(CoC) 和“不要重复自己”(DRY) 原则。 超过370 万个活跃网站采用 Ruby on Rails 作为框架。

该框架使每个Ruby on Rails 开发公司都能够以更加简单的方式构建强大的、可扩展的应用程序。 然而,鉴于 Rails 提供的功能过多,即使是最熟练的开发人员有时也会犯错。

以下是 10 个典型的 Rails 编程疏忽及其补救措施:

1. 过度使用回调

错误:Rails 为开发人员提供了强大的回调功能。 这有助于实现对象生命历程中特定事件的自动化。 尽管它们简化了一些流程,但过度依赖可能会创建迷宫般的模型。

如何避免:在单个模型中交织多个回调可能会产生冲突或零星激活。 随着这种复杂性的不断增加,维护模型成为一项艰巨的任务。

理想的方法是什么? 遵守单一责任原则,确保每个类都有单一的变更原因。 如果回调与模型的主函数不同,那么它可能更适合服务对象或装饰器。

2. 忽略数据库

错误:Rails 拥有无可挑剔的数据库集成,常常使底层操作感觉不可见。 但这种无缝体验有时会导致查询未优化或速度下降。

如何避免:尽管 Rails 在桥接数据库特性方面承担了繁重的工作,但了解后端仍然至关重要。 注意 N+1 查询等陷阱。

像“bullet” gem 这样的工具可以帮助标记此类问题。 此外,熟悉数据库索引机制。 定期搜索日志以查找缓慢的查询,以微调数据库性能。

3. 不编写测试或忽略失败的测试

错误:Rails 中的测试提供了应用程序功能的蓝图,在重塑任务期间提供了缓冲。 然而,偶尔也会发生忽视测试或对失败视而不见的情况。

如何避免:虽然在没有测试的情况下制作应用程序最初看起来似乎很方便,但它会带来潜在的挑战。 采用 RSpec 和 MiniTest 等测试工具,旨在实现详尽的测试覆盖范围。 利用 SimpleCov 等工具进行评估,并优先纠正失败的测试。

4. 绕过验证

错误:Rails 强大的验证机制通常是开发人员的盟友。 但是,诸如 update_attribute 之类的方法可以回避这些验证,从而可能导致数据异常。

如何避免:数据的神圣性是不容谈判的。 Rails 验证在数据装入数据库之前确保数据一致性。 完全理解 update 和 update_attribute 等方法的细微差别。 除非明确有必要绕过验证,否则请坚持传统路径,并严格记录异常情况。

5. 不了解资产管道

错误:Rails 的资产管道旨在优化 CSS 和 JavaScript 等资产。 配置错误可能会阻碍资产交付或对性能产生不利影响。

如何避免:深入了解资产管道的工作原理,以防止部署出现问题。 确保生产阶段严格的预编译方案。 利用 image_tag 等 Rails 助手来实现优化后的无缝资产链接。

6. 不使用后台作业来执行耗时的任务

错误:在实时任务(如电子邮件发送)中让用户等待,并不是最好的用户体验。

如何避免:Web 应用程序应该是响应能力的代名词。 将数据计算或发送电子邮件等要求较高的任务卸载到后台作业。 Sidekiq 或 Resque 等工具是为这些操作量身定制的,可确保您的主要应用程序保持敏捷并以用户为中心。

7. 过度使用宝石

错误:虽然 Rails 生态系统拥有丰富的宝石,但不加区别地添加它们可能会使应用程序膨胀并引入潜在的安全风险。

如何避免:宝石非常棒,可以提供解决棘手问题的捷径。 但更多并不总是更好。 您滑入应用程序口袋中的每颗宝石就像在链条上添加另一个链接 – 它可能是较弱的链接。

在决定使用宝石之前,请停下来思考一下。 查看它的更新频率、支持社区以及维护情况。

为了帮助发现漏洞,Bundler-audit 等工具可以作为您的监视工具。

8. 不对数据库列建立索引

错误:为了获得最佳性能,涉及搜索或连接的数据库列需要索引。 忽略这一点可能会大大减慢操作速度。

如何避免:随着应用程序的成熟和数据的增加,数据库保持敏捷至关重要。 将索引视为为您的数据库提供了一张地图,而不是让它四处徘徊迷失。

优先考虑连接或搜索操作中涉及的列。 如果您不确定,rails_db 等工具可以让您鸟瞰查询的执行情况。

9. 使用默认错误页面

错误:虽然 Rails 的默认错误页面在开发环境中很有用,但它们可能会在生产中暴露不必要的信息,并且不方便用户使用。

如何避免:在现实的生产世界中,一切都是为了平衡用户体验和安全性。 标准 Rails 错误页面可能会无意中闪现一些敏感的系统信息。

此外,它们对于偶然发现它们的用户来说并不完全令人安慰。 通过设计定制的错误页面来改造您的应用程序。 这些应该是有用的、谨慎的、令人放心的,帮助用户导航而不引起警报。

10.忽略安全最佳实践

错误:Rails 就像一座具有许多内置安全功能的堡垒。 但如果你没有正确使用它们,你可能就会敞开大门。

如何避免:网络威胁有各种形式和规模——从偷偷摸摸的 SQL 注入到恶意跨站点脚本。 虽然 Rails 为您提供了 SQL 参数化和 CSRF 令牌等工具来抵御许多此类威胁,但一个小小的失误就可能让您容易受到攻击。

像brakeman这样的工具可以成为您值得信赖的侦察员,指出潜在的安全风险。 安全应该始终是重中之重,定期审核和审查可以帮助保持强大的安全态势。

结论

Ruby on Rails 虽然非常强大且对开发人员友好,但也并非没有其复杂性。 避免上述错误将使您走上打造更高效、可维护和安全的 Rails 应用程序的道路。 请记住,掌握 Rails 的关键不仅在于了解其功能,还在于识别和避免潜在的陷阱。