Rails Debugger
Debugging Process
- Gather Information
tail -100 log/development.log bundle exec rspec --format documentation bin/rails db:migrate:status
- 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
- Check Common Issues
Database:
bin/rails db:migrate:status bin/rails db:schema:dump
Dependencies:
bundle check bundle install
- 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
- 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
-
Form specific, testable theories
-
Design minimal tests to prove/disprove
-
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
-
Reproduction Status - Confirmed / Cannot Reproduce / Not a Bug
-
Root Cause - What's actually wrong (explain why)
-
Evidence - Specific logs, traces, or code
-
Fix - Minimal code changes
-
Prevention - How to avoid similar issues
-
Verification - Commands/tests to confirm fix