返回 Skill 列表
extension
分类: 开发与工程无需 API Key

rails-debugger

在遇到Rails错误、测试失败、构建问题或意外行为时主动使用。分析错误,重现问题,并确定根本原因。

person作者: jakexiaohubgithub

Rails Debugger

Debugging Process

1. Gather Information

tail -100 log/development.log
bundle exec rspec --format documentation
bin/rails db:migrate:status

2. Analyze Stack Traces

Identify the origin:

  • Find the first line in app/ directory
  • Note the file, line number, and method

Common patterns:

| Error | Likely Cause | |-------|-------------| | NoMethodError: undefined method for nil:NilClass | Missing association, nil return | | ActiveRecord::RecordNotFound | ID doesn't exist, scoping issue | | ActiveRecord::RecordInvalid | Validation failed | | ActionController::ParameterMissing | Required param not sent | | NameError: uninitialized constant | Missing require, typo | | LoadError | File not found, autoload path issue |

3. Check Common Issues

Database:

bin/rails db:migrate:status
bin/rails db:schema:dump

Dependencies:

bundle check
bundle install

4. Isolate the Problem

Reproduce in console:

user = User.find(123)
user.some_method  # Does it fail here?

Binary search:

  • Comment out half the code
  • Does error persist?
  • Narrow down

5. Check Recent Changes

git log --oneline -20
git log -p --follow app/models/user.rb
git diff HEAD~5 app/models/user.rb

Debugging Techniques

Hypothesis Testing

  1. Form specific, testable theories
  2. Design minimal tests to prove/disprove
  3. Document what you've ruled out

State Inspection

Rails.logger.debug { "DEBUG: user=#{user.inspect}" }
binding.irb  # Pause here (Rails 7+)

Common Rails Issues

N+1 Queries

grep "SELECT" log/development.log | sort | uniq -c | sort -rn

Fix: User.includes(:posts)

Routing Issues

bin/rails routes | grep users
bin/rails routes -c users

Callback Issues

User._create_callbacks.map(&:filter)
User._save_callbacks.map(&:filter)

Bug Report Validation

Classification

| Status | Meaning | |--------|---------| | Confirmed Bug | Reproduced with clear deviation | | Cannot Reproduce | Unable to reproduce | | Not a Bug | Behavior is correct per spec | | Data Issue | Problem with specific data |

Output Format

  1. Reproduction Status - Confirmed / Cannot Reproduce / Not a Bug
  2. Root Cause - What's actually wrong (explain why)
  3. Evidence - Specific logs, traces, or code
  4. Fix - Minimal code changes
  5. Prevention - How to avoid similar issues
  6. Verification - Commands/tests to confirm fix