关于 rails-debugger
rails-debugger 是面向 Rails 开发者的调试技能,用于排查应用错误。它指导分析日志和堆栈跟踪、隔离问题、分类缺陷,并整理最小修复及验证步骤。
主要功能
- 01分析日志与堆栈跟踪
- 02检查数据库和依赖项
- 03通过控制台复现并二分排查
- 04检查近期代码变更
- 05按结构整理缺陷报告与验证
适用场景
- 01追踪异常在应用代码中的来源
- 02排查迁移或依赖项问题
- 03复现并分类已报告的缺陷
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ majesticlabs-dev/ majestic-marketplace --skill rails-debugger安装后在 Claude Code 中输入/rails-debugger确认已加载。
详细介绍
Rails 调试器
调试流程
1. 收集信息
tail -100 log/development.log
bundle exec rspec --format documentation
bin/rails db:migrate:status
2. 分析堆栈跟踪
确定起因:
- 找到
app/目录中的第一行 - 记录文件、行号和方法
常见模式:
| 错误 | 可能原因 |
|---|---|
NoMethodError: undefined method for nil:NilClass | 关联缺失,返回值为 nil |
ActiveRecord::RecordNotFound | ID 不存在,作用域问题 |
ActiveRecord::RecordInvalid | 验证失败 |
ActionController::ParameterMissing | 未发送必需参数 |
NameError: uninitialized constant | 缺少 require,拼写错误 |
LoadError | 找不到文件,自动加载路径问题 |
3. 检查常见问题
数据库:
bin/rails db:migrate:status
bin/rails db:schema:dump
依赖项:
bundle check
bundle install
4. 隔离问题
在控制台中复现:
user = User.find(123)
user.some_method # Does it fail here?
二分查找:
- 注释掉一半代码
- 错误是否仍然存在?
- 逐步缩小范围
5. 检查近期更改
git log --oneline -20
git log -p --follow app/models/user.rb
git diff HEAD~5 app/models/user.rb
调试技巧
假设检验
- 提出具体且可检验的假设
- 设计最小化测试以验证或证伪假设
- 记录已排除的可能性
状态检查
Rails.logger.debug { "DEBUG: user=#{user.inspect}" }
binding.irb # Pause here (Rails 7+)
常见 Rails 问题
N+1 查询
grep "SELECT" log/development.log | sort | uniq -c | sort -rn
修复:User.includes(:posts)
路由问题
bin/rails routes | grep users
bin/rails routes -c users
回调问题
User._create_callbacks.map(&:filter)
User._save_callbacks.map(&:filter)
Bug 报告验证
分类
| 状态 | 含义 |
|---|---|
| 已确认的 Bug | 已复现,且存在明确偏差 |
| 无法复现 | 无法复现 |
| 不是 Bug | 行为符合规范 |
| 数据问题 | 特定数据存在问题 |
输出格式
- 复现状态 - 已确认 / 无法复现 / 不是 Bug
- 根本原因 - 实际问题所在(解释 原因)
- 证据 - 具体日志、跟踪记录或代码
- 修复 - 最小化代码更改
- 预防 - 如何避免类似问题
- 验证 - 用于确认修复的命令/测试
评论
支持 Markdown