mcpField
R
rails-debugger

rails-debugger

github.com/majesticlabs-dev开发5048 次安装7 周前更新
代码仓库

关于 rails-debugger

rails-debugger 是面向 Rails 开发者的调试技能,用于排查应用错误。它指导分析日志和堆栈跟踪、隔离问题、分类缺陷,并整理最小修复及验证步骤。

主要功能

  1. 01分析日志与堆栈跟踪
  2. 02检查数据库和依赖项
  3. 03通过控制台复现并二分排查
  4. 04检查近期代码变更
  5. 05按结构整理缺陷报告与验证

适用场景

  1. 01追踪异常在应用代码中的来源
  2. 02排查迁移或依赖项问题
  3. 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::RecordNotFoundID 不存在,作用域问题
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

调试技巧

假设检验
  1. 提出具体且可检验的假设
  2. 设计最小化测试以验证或证伪假设
  3. 记录已排除的可能性
状态检查
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行为符合规范
数据问题特定数据存在问题

输出格式

  1. 复现状态 - 已确认 / 无法复现 / 不是 Bug
  2. 根本原因 - 实际问题所在(解释 原因)
  3. 证据 - 具体日志、跟踪记录或代码
  4. 修复 - 最小化代码更改
  5. 预防 - 如何避免类似问题
  6. 验证 - 用于确认修复的命令/测试

评论

支持 Markdown