Rails Error Dashboard - Self-Hosted Error Tracking for Rails
🎉 Version 0.4.1
BETA

Error Tracking
Without the SaaS

Open source Rails error dashboard. Self-hosted, privacy-focused, zero recurring costs. Built for solo developers who don't want to pay for expensive monitoring tools.

🧙‍♂️
Demo Credentials (LOTR-themed)
Username: gandalf   Password: youshallnotpass
Featuring 480+ realistic Rails errors with local variable capture, swallowed exception detection, diagnostic dumps, breadcrumbs, and Middle-earth assignees 🗡️
485
Demo Errors
5
Platforms
30+
Features
36⭐
GitHub Stars
Star on GitHub →
9,884
Total Downloads
View on RubyGems →
v0.4.1
Latest Version
View Changelog →

Tired of Expensive Error Monitoring?

Sentry costs $26/month. Rollbar costs $25/month. Honeybadger costs $39/month.

Rails Error Dashboard costs $0/month.

Self-host it on your own server. Own your data. No vendor lock-in. No surprise bills.

Everything You Need to Track Errors

30+ powerful features, all included for free

Real-time Error Capture

Automatically catches errors via middleware and Rails.error subscriber. Never miss a bug.

Advanced Analytics

Error trends, platform comparison, correlation analysis, MTTR statistics, and more.

Smart Deduplication

Automatically groups duplicate errors. See occurrence counts instead of spam.

Multi-Channel Notifications

Slack, Email, Discord, PagerDuty, and custom webhooks. Get alerted instantly.

Workflow Integration

Assign errors, set priorities, snooze notifications, add comments. Full team collaboration.

Mobile App Support

REST API for iOS, Android, React Native, Flutter. Track mobile errors too.

Beautiful Dark Mode UI

Catppuccin-themed interface. Dark and light modes. Responsive on all devices.

Privacy First

Your data stays on your server. Passwords and tokens auto-filtered. No third-party tracking.

Plugin System

Jira integration, Prometheus metrics, audit logs. Easy to extend with custom plugins.

NEW

Multi-App Support 🎉

Track errors from multiple Rails apps in one dashboard. Auto-registration, data isolation, easy app switching. See it in the demo!

NEW IN v0.4

Deep Introspection

See inside your exceptions. Capture local variables, instance variables, swallowed exceptions, and system diagnostic dumps. Every feature opt-in and production-safe.

NEW
🔎

Local Variable Capture

See every local variable in scope at the exact moment an exception is raised. Powered by TracePoint(:raise) — no Binding objects stored.

  • Configurable depth, string length, array/hash limits
  • Sensitive data auto-filtered via filter_parameters
  • Opt-in: config.enable_local_variables = true
NEW
📚

Instance Variable Capture

Capture instance variables from the object that raised the exception. See @user, @order, and the receiver's class name.

  • Shows _self_class metadata
  • Configurable max count and filter patterns
  • Opt-in: config.enable_instance_variables = true
NEW
👀

Swallowed Exception Detection

Find exceptions your code raises but silently rescues — the bugs that never reach your error tracker. Uses dual TracePoint(:raise) + TracePoint(:rescue).

  • Hourly bucketing with raise/rescue ratio
  • Dashboard page at /errors/swallowed_exceptions
  • Requires Ruby 3.3+ (TracePoint :rescue event)
NEW
📸

Diagnostic Dumps

Capture on-demand system state snapshots: environment, GC stats, threads, connection pool, memory, and job queue. Stored for historical comparison.

  • Dashboard button or rails error_dashboard:diagnostic_dump
  • Expandable JSON details with history
NEW
🛡

Rack Attack Tracking

Track Rack::Attack throttle, blocklist, and safelist events as breadcrumbs. Correlate rate limiting with errors on a dedicated summary page.

  • Dashboard page at /errors/rack_attack_summary
  • Requires breadcrumbs enabled
NEW
💥

Process Crash Capture

Catch unhandled exceptions that crash the Ruby process via at_exit hook. The last line of defense before your app goes down.

  • Automatic — enabled by default
  • Logged before process exit
v0.3

Smarter Debugging, Zero Effort

Aggregate analysis pages, deprecation tracking, N+1 detection, cache health monitoring, system health snapshots, job & database health, and flexible authentication. No competitor has all of these.

⚠️

Deprecation Warnings Page

App-wide deprecation warnings grouped by message and source. See occurrence counts, affected errors, and filter by time range — all in one view.

  • Aggregate view across all errors
  • Linked error IDs for quick navigation
  • Rails Upgrade Guide link for each warning
🔍

N+1 Query Patterns Page

Cross-error N+1 analysis grouped by SQL fingerprint. Find the most impactful query patterns with cumulative time and eager loading suggestions.

  • Grouped by SQL fingerprint across all errors
  • Cumulative query time (red if >100ms)
  • Auto-extracted table name with eager loading tip
📦

Cache Health Page

Per-error cache performance sorted worst-first. Hit rates, read/write counts, slowest operations, and advisory alerts when hit rate drops below 80%.

  • Color-coded hit rates (green/yellow/red)
  • Sorted worst-first to prioritize fixes
  • Rails Caching Guide link for optimization
📋

Per-Error Deprecations

Each error's detail page shows a red summary card with every deprecation warning captured during that request, including source file and line number.

  • Automatic deprecation.rails capture
  • Essential for Rails version upgrades

Per-Error N+1 Detection

Each error shows repeated SQL patterns with eager loading tips. Smart normalization of literals and IN clauses — no gems like bullet needed.

  • Display-time only — zero request overhead
  • Extracted table name with includes() suggestion
💓

System Health Snapshot

Know your app's runtime state at the moment of failure. GC stats, process memory, thread count, connection pool, and Puma stats captured automatically.

  • Color-coded memory and pool pressure warnings
  • Sub-millisecond capture — zero overhead
🔒

Flexible Authentication

Use your existing Devise, Warden, or session-based auth instead of HTTP Basic Auth. One lambda, full controller context access, fail-closed security.

  • config.authenticate_with = -> { warden.authenticated? }
  • Supports redirect to login page
⚙️

Job Health Page

Aggregate view of background job queue stats across errors. See which errors correlate with Sidekiq, SolidQueue, or GoodJob failures — sorted by failed count.

  • Summary cards: errors with job data, total failed, adapters
  • Adapter badges (Sidekiq / SolidQueue / GoodJob)
🗃

Database Health Page

PgHero-style database health panel. Live connection pool stats, PostgreSQL table sizes, dead tuples, unused indexes, and per-error connection pool stress scores.

  • Live stats from pg_stat_user_tables
  • Color-coded pool utilization (≥80% danger)
🧪

RSpec Spec Generator

Generate request specs for all dashboard endpoints with one command. Copy-to-clipboard button on the settings page for quick access.

  • rails g rails_error_dashboard:rspec_request_specs
  • Tests all dashboard routes with auth
v0.2

11 New Features, Zero Config

Smarter error tracking out of the box. Most features work automatically — no configuration needed.

🔗

Exception Cause Chains

See the full root cause chain: SocketError caused RuntimeError. No more guessing.

🌐

Enriched HTTP Context

Every error captures HTTP method, hostname, content type, and request duration automatically.

🔄

Auto-Reopen

Resolved errors automatically reopen when they recur. Never miss a regression with the "Reopened" badge.

🔒

Sensitive Data Filtering

Passwords, tokens, secrets, and API keys are automatically scrubbed from error context before storage.

🖥️

Environment Info

Ruby version, Rails version, gem versions, server, and database adapter captured at error time.

🔕

Notification Throttling

Severity filters, per-error cooldown, and milestone threshold alerts prevent alert fatigue.

🔑

Custom Fingerprint

Override error grouping with a lambda. Group RecordNotFound by controller, or any custom logic.

👤

CurrentAttributes

Zero-config capture of Current.user, Current.account, and any other attributes.

📦

Lighter Footprint

Core gem now requires only rails + pagy. Four dependencies made optional.

BRIN Indexes

PostgreSQL BRIN index on occurred_at — 72KB vs 676MB B-tree. 70x faster time-range queries.

🔍

Structured Backtraces

Uses backtrace_locations for richer data with proper path, line number, and method labels.

5-Minute Installation

Three simple steps to start tracking errors

1

Add to Gemfile

gem "rails_error_dashboard", "~> 0.4.1"
$ bundle install
2

Run Installer

rails generate rails_error_dashboard:install
rails db:migrate
3

Access Dashboard

rails server
# Visit: http://localhost:3000/error_dashboard

Default credentials: gandalf / youshallnotpass

Simple, Honest Pricing

Currently in BETA
$0
Forever. No hidden costs.
  • All 35+ features included
  • Unlimited errors, users, platforms
  • Self-hosted on your infrastructure
  • MIT License - use commercially
  • No vendor lock-in, own your data
  • Community support via GitHub
Try Live Demo Now →

Compared to: Sentry ($26/mo), Rollbar ($25/mo), Honeybadger ($39/mo), Bugsnag ($59/mo)

Ready to Take Control of Your Errors?

Try the live demo now. See all 30+ features in action. No signup required.

Built with ❤️ by Anjan for solo developers and small teams