本页面介绍了 Gumroad 项目中使用的代码格式、代码检查和开发约定。这些标准确保了代码质量的一致性、可维护的模式以及开发工作流中的自动化质量门。有关 IDE 设置和环境配置的信息,请参阅本地开发设置。有关单个质量工具的详细配置,请参阅代码质量工具。
本项目结合使用自动化格式化工具和样式强制执行,以在 Ruby 和 JavaScript/TypeScript 代码库中保持一致的代码质量。
Prettier 通过以下配置处理 JavaScript、TypeScript 和 CSS 格式,配置定义在 .prettierrc1-4
| 设置 | 值 | 目的 |
|---|---|---|
printWidth | 120 | 代码格式化的最大行长度 |
plugins | prettier-plugin-tailwindcss | 自动 Tailwind CSS 类排序 |
RuboCop 提供全面的 Ruby 代码样式检查和强制执行。其配置继承自 Rails 特定规则并包含多项自定义。
核心配置结构
DisabledByDefault: true 方法,仅启用明确配置的 copsrubocop-performance、rubocop-rails、rubocop-rspec、rubocop-rake主要样式强制执行领域
排除的目录
bin/**/*、db/schema.rb、node_modules/**/*gumroad_deployer 除外)tmp/**/*、vendor/bundle/**/*本项目通过 .cursorrules1-37 强制执行特定的命名模式和组织标准。
| 约定 | 标准 | 示例 |
|---|---|---|
| 变量命名 | 使用 product 而不是 link | product_id 而不是 link_id |
| 用户角色 | 使用 buyer 和 seller | buyer_email 而不是 customer_email |
| Sidekiq 作业 | 类名以 "Job" 结尾 | ProcessBacklogJob |
| 测试描述 | 避免以 "should" 开头 | "processes payment" 而不是 "should process payment" |
| 电子邮件域名 | 使用示例域名 | 测试时使用 @example.com |
Sidekiq 作业优先级遵循严格的指南,分为四个优先级级别
队列选择指南
critical: 仅用于收据/购买邮件default: 需要及时处理的时间敏感型作业low: 大部分后台作业(推荐的默认选项)mongo: 用于一次性脚本和批量迁移的遗留队列依赖管理
import debounce from "lodash/debounce" 而不是 import { debounce } from "lodash"request 而不是 $.ajax数据库和模型模式
app/modules/ 目录(遗留位置)app/controllers/concerns/、app/models/concerns/测试模式
to_not have_enqueued_sidekiq_jobSidekiqWorkerName.jobs.size 进行断言@example.comRSpec 测试套件使用来自 .rspec1-4 的以下配置:
| 设置 | 目的 |
|---|---|
--color | 启用彩色输出以提高可读性 |
--require spec_helper | 自动为所有测试引入 spec_helper |
--profile | 显示最慢的示例以识别性能问题 |
本项目强调并行测试执行和适当的作业测试模式
Onetime 任务而非基于回调的数据迁移lock: :until_executed 模式测试作业去重来源:.rspec1-4 .cursorrules27-35
预提交钩子系统在代码提交前强制执行质量标准
该钩子执行 npx lint-staged,它仅对暂存文件运行配置好的格式化工具和代码检查工具,从而确保高效处理。
开发工具在协调的工作流中协同工作
该系统实现了多层质量强制执行
.cursorrules 在开发过程中提供实时指导配置继承模式
来源:.cursorrules1-37 .prettierrc1-4 .rubocop.yml1-83 .rspec1-4 .githooks/pre-commit1-2