rails-debugging

Rails Debugging Tools & Techniques

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "rails-debugging" with this command: npx skills add shoebtamboli/rails_claude_skills/shoebtamboli-rails-claude-skills-rails-debugging

Rails Debugging Tools & Techniques

Development logs

tail -f log/development.log

Production logs (Kamal)

kamal app logs --tail

Filter by severity

grep ERROR log/production.log

Filter by request

grep "Started GET" log/development.log

Start console

rails console

Or production console (Kamal)

kamal app exec 'bin/rails console'

Test models

user = User.find(1) user.valid? # Check validations user.errors.full_messages # See errors

Test queries

User.where(email: "test@example.com").to_sql # See SQL User.includes(:posts).where(posts: { published: true }) # Avoid N+1

Add to any Rails file

def some_method byebug # Execution stops here

... rest of method

end

Byebug commands:

n - next line

s - step into method

c - continue execution

pp variable - pretty print

var local - show local variables

exit - quit debugger

In rails console or code

ActiveRecord::Base.logger = Logger.new(STDOUT)

Now all SQL queries print to console

User.all

=> SELECT "users".* FROM "users"

List all routes

rails routes

Filter routes

rails routes | grep users

Show routes for controller

rails routes -c users

Migration status

rails db:migrate:status

Show schema version

rails db:version

Check pending migrations

rails db:abort_if_pending_migrations

Run one-liner

rails runner "puts User.count"

Run script

rails runner scripts/investigate_users.rb

Production environment

RAILS_ENV=production rails runner "User.pluck(:email)"

Run single test with backtrace

rails test test/models/user_test.rb --verbose

Run with warnings enabled

RUBYOPT=-W rails test

Run with seed for reproducibility

rails test --seed 12345

User Load (0.1ms) SELECT * FROM users WHERE id = 1 Post Load (0.1ms) SELECT * FROM posts WHERE user_id = 1 Post Load (0.1ms) SELECT * FROM posts WHERE user_id = 2 Post Load (0.1ms) SELECT * FROM posts WHERE user_id = 3

Bad

users.each { |user| user.posts.count }

Good

users.includes(:posts).each { |user| user.posts.count }

Check migration status

rails db:migrate:status

Run pending migrations

rails db:migrate

Or rollback and retry

rails db:rollback rails db:migrate

Official Documentation:

  • Rails Guides - Debugging Rails Applications

  • Rails API - ActiveSupport::Logger

  • Ruby Debugging Guide

Gems & Libraries:

  • byebug - Ruby debugger

  • bullet - N+1 query detection

Tools:

  • Rack Mini Profiler - Performance profiling

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

rails-authorization-cancancan

No summary provided by upstream source.

Repository SourceNeeds Review
General

rspec-testing

No summary provided by upstream source.

Repository SourceNeeds Review
General

rails-pagination-kaminari

No summary provided by upstream source.

Repository SourceNeeds Review
General

rails-controllers

No summary provided by upstream source.

Repository SourceNeeds Review