优化 Ruby on Rails 和 ActiveRecord 中的数据库性能

2024-11-09

本文探讨了在Ruby on Rails和ActiveRecord中优化数据库性能的策略。文章首先介绍了N+1问题及其解决方法,如eager loading、Bullet gem和 prosopite。然后讨论了数据库索引、选择、提取和立即加载等基本主题,以及性能分析、数据库分片和使用只读副本的后台作业等更高级的主题。文章强调了仔细使用ActiveRecord和索引的重要性,并建议使用APM工具(如AppSignal)进行性能监控。最后,文章还探讨了后台作业和只读副本如何提高数据库性能,并简要介绍了数据库分片。

阅读更多

使用 GenServer 在 Phoenix 和 Elixir 中管理分布式状态

2024-11-05

本文介绍了如何在 Phoenix 和 Elixir 应用程序中使用 GenServer 管理分布式状态,并以实现令牌桶限速器为例进行说明。文章首先展示了单节点情况下使用 GenServer 实现限速器的方法,然后讨论了在分布式环境中使用 GenServer 的挑战,并提出了两种分布式 GenServer 的实现策略:使用单一全局进程和使用多个跨集群进程。文章重点讲解了如何使用 DeltaCrdt 库实现多节点状态同步、集群 GenServer 以及处理集群变化等问题,并提供了完整的代码示例。

阅读更多
未分类 GenServer

Ruby on Rails 8 新功能概览

2024-10-07

Ruby on Rails 8 发布了首个 Beta 版本,带来了 Kamal 2 集成、Propshaft 作为默认资源管道、ActiveRecord 增强功能以及 SQLite 生产环境支持等一系列新功能和改进。Kamal 2 和 Thruster 实现了轻松部署,Solid Adapters 简化了部署并减少了对额外服务的依赖。SQLite 增强功能使其成为生产环境的可行选择,Propshaft 为资源管理提供了现代化方法,内置身份验证简化了安全设置。此外,Rails 8 还引入了新的脚本文件夹和生成器,以及一系列 ActiveRecord 改进,以提高性能、简化迁移并增强数据库功能。

阅读更多
未分类

使用 Gleam 增强您的 Elixir 代码库

2024-07-27

本文介绍了如何使用 Gleam 增强 Elixir 代码库。Gleam 是一种运行在 BEAM 平台上的静态类型语言,可以作为增强功能添加到 Elixir 代码库中,而无需重写所有内容。本文通过一个学生管理应用程序的示例,展示了如何在 Elixir 项目中集成 Gleam,并解释了 Gleam 的类型系统、函数定义以及如何从 Elixir 中调用 Gleam 代码。此外,文章还讨论了如何使用 Gleam 实现等待列表功能,以及如何在 Gleam 和 Elixir 之间维护数据一致性。

阅读更多
未分类

Ruby 中应该避免的五件事

2024-05-24

这篇文章探讨了 Ruby 代码中常见的五个问题,并提供了如何将这些问题转化为惯用写法的建议。文章首先强调了使用 Rubocop 和 Ruby 惯用写法来减少代码差异的重要性。然后,文章深入探讨了五个具体问题:冗长、检测 nil 的长表达式、过度使用 self、在临时变量中收集结果以及在内存中排序和过滤。对于每个问题,文章都提供了示例代码来说明问题,并展示了更简洁、更高效的解决方案。

阅读更多
未分类