-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathruby.mdc
More file actions
53 lines (44 loc) · 2.04 KB
/
ruby.mdc
File metadata and controls
53 lines (44 loc) · 2.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
---
description: 使用 Ruby 和 Ruby on Rails 的现代 Web 开发最佳实践
globs: "**/*.rb", "app/**/*.rb", "config/**/*.rb"
---
# Ruby & Rails 最佳实践
## Ruby 风格
- 遵循 The Ruby Style Guide
- 使用 2 个空格缩进
- 优先使用 `_` 作为变量名分隔符 (snake_case)
- 优先使用 `&&`/`||` 而不是 `and`/`or`
- 优先使用 `%()` 或 `%w()` 语法创建字符串或字符串数组
- 使用 `do...end` 表示多行块,使用 `{...}` 表示单行块
## Rails "Fat Model, Skinny Controller"
- 将业务逻辑放在模型(Models)中
- Controller 应只负责:接收请求、调用模型方法、重定向或渲染视图
- 使用关注点(Concerns)来组织模型中的相关逻辑
- 考虑使用 Service Objects 或 Form Objects 来处理复杂的业务逻辑
## 路由 (Routing)
- 优先使用 `resources` 来定义 RESTful 路由
- 避免使用通配符路由
- 使用命名空间(`namespace`)或作用域(`scope`)来组织相关路由
## Active Record
- 使用作用域(Scopes)来创建可重用的查询
- 警惕 N+1 查询,使用 `includes` 或 `joins` 来预加载关联数据
- 使用数据库索引来优化查询性能
- 使用迁移(Migrations)来管理数据库模式的变更,并使其可回滚
## 视图 (Views)
- 避免在视图中编写复杂的逻辑或数据库查询
- 使用局部视图(Partials)和辅助方法(Helpers)来保持视图的 DRY (Don't Repeat Yourself)
- 使用 i18n (Internationalization) 来处理文本
## 测试
- 使用 RSpec 或 Minitest
- 使用 FactoryBot (或 factory_girl) 来创建测试数据
- 遵循 Arrange-Act-Assert (Given-When-Then) 模式
- 测试模型、控制器、视图和辅助方法
## 安全
- 使用 `strong_parameters` 来防止批量赋值漏洞
- 使用 `brakeman` 等工具进行静态安全分析
- 对所有用户输入进行清理,以防止 XSS
- 了解并防范 CSRF 攻击
## Gem 管理
- 使用 Bundler (`Gemfile`) 管理依赖
- 将 Gem 按组(development, test, production)分类
- 定期运行 `bundle update` 和 `bundle audit`