solid-ruby

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

SOLID Ruby - Modular Architecture

SOLID Ruby - 模块化架构

Agent Workflow (MANDATORY)

Agent工作流(强制要求)

Before ANY implementation, use
TeamCreate
to spawn 3 agents:
  1. fuse-ai-pilot:explore-codebase - Analyze existing architecture
  2. fuse-ai-pilot:research-expert - Verify Ruby/Rails docs via Context7
  3. fuse-ai-pilot:sniper - Post-implementation validation

在进行任何实现之前,使用
TeamCreate
生成3个Agent:
  1. fuse-ai-pilot:explore-codebase - 分析现有架构
  2. fuse-ai-pilot:research-expert - 通过Context7验证Ruby/Rails文档
  3. fuse-ai-pilot:sniper - 实现后验证

DRY - Reuse Before Creating (MANDATORY)

DRY - 复用优先(强制要求)

Before writing ANY new code:
  1. Grep the codebase for similar modules, services, or logic
  2. Check shared locations:
    app/modules/core/services/
    ,
    app/modules/core/contracts/
  3. If similar code exists -> extend/reuse instead of duplicate
  4. If code will be used by 2+ features -> create it in
    app/modules/core/

在编写任何新代码之前:
  1. 在代码库中搜索类似的模块、服务或逻辑
  2. 检查共享位置:
    app/modules/core/services/
    app/modules/core/contracts/
  3. 如果存在类似代码 -> 扩展/复用而非重复编写
  4. 如果代码将被2个及以上功能使用 -> 在
    app/modules/core/
    中创建

Architecture (Modules MANDATORY)

架构(必须使用模块)

LayerLocationMax Lines
Controllers
app/modules/[feature]/controllers/
50
Services
app/modules/[feature]/services/
100
Repositories
app/modules/[feature]/repositories/
100
Contracts
app/modules/[feature]/contracts/
30
Models
app/modules/[feature]/models/
50
Shared
app/modules/core/{services,contracts,concerns}/
-
NEVER use flat
app/
structure - always
app/modules/[feature]/

层级存放位置最大行数
Controllers
app/modules/[feature]/controllers/
50
Services
app/modules/[feature]/services/
100
Repositories
app/modules/[feature]/repositories/
100
Contracts
app/modules/[feature]/contracts/
30
Models
app/modules/[feature]/models/
50
共享代码
app/modules/core/{services,contracts,concerns}/
-
严禁使用扁平化的
app/
结构 - 必须使用
app/modules/[feature]/

Critical Rules (MANDATORY)

核心规则(强制要求)

RuleValue
File limit100 lines (split at 90)
Controllers< 50 lines, delegate to services
Contracts
contracts/
directory ONLY (duck typing modules)
YARD docEvery public method documented
Frozen string
# frozen_string_literal: true
in every file
ConcernsUse for shared behavior (like interfaces)

规则要求
文件行数限制100行(90行时拆分)
Controllers<50行,委托给服务处理
Contracts仅存放在
contracts/
目录(鸭子类型模块)
YARD文档每个公共方法都需编写文档
冻结字符串每个文件中添加
# frozen_string_literal: true
Concerns用于实现共享行为(如接口)

Reference Guide

参考指南

Concepts

核心概念

TopicReferenceWhen to consult
SOLID Overviewsolid-principles.mdQuick reference
SRPsingle-responsibility.mdFat classes
OCPopen-closed.mdAdding strategies
LSPliskov-substitution.mdContracts
ISPinterface-segregation.mdFat modules
DIPdependency-inversion.mdInjection
Architecturearchitecture-patterns.mdModular Rails
主题参考文档查阅时机
SOLID概述solid-principles.md快速参考
SRP(单一职责原则)single-responsibility.md处理臃肿类时
OCP(开闭原则)open-closed.md添加策略时
LSP(里氏替换原则)liskov-substitution.md处理契约时
ISP(接口隔离原则)interface-segregation.md处理臃肿模块时
DIP(依赖倒置原则)dependency-inversion.md处理依赖注入时
架构architecture-patterns.md模块化Rails开发时

Templates

模板

TemplateWhen to use
module.mdFeature module structure
service.mdBusiness logic service
contract.mdDuck typing contracts
model.mdActive Record model
error.mdCustom exceptions
test.mdRSpec tests

模板使用场景
module.md功能模块结构
service.md业务逻辑服务
contract.md鸭子类型契约
model.mdActive Record模型
error.md自定义异常
test.mdRSpec测试

Forbidden

禁止操作

Anti-PatternFix
Files > 100 linesSplit at 90
Business logic in modelsExtract to service
Fat controllersDelegate to services
Flat
app/
structure
Use
app/modules/[feature]/
God classesSplit by responsibility
反模式修复方案
文件行数>100在90行时拆分
模型中包含业务逻辑提取到服务中
臃肿控制器委托给服务处理
扁平化
app/
结构
使用
app/modules/[feature]/
上帝类按职责拆分