Features

Rails Pulse provides performance and exception monitoring with an opinionated dashboard, detailed metrics, and debugging tools, all stored in your own database.

Performance Monitoring

Interactive Dashboard

A system health bar shows healthy, slow, and critical counts across routes, queries, jobs, exceptions, and storage at a glance. Below it: response time percentiles (P50/P95/P99), throughput and error charts, a Needs Attention panel, recent deployments, and storage status. Responsive interface with dark/light mode support.

Route-Specific Metrics

Routes are identified by controller action and path, so users#index and users#create are tracked separately even when they share a path. Dynamic segments are normalized (/posts/42 becomes /posts/:id). Each route page shows its own history, thresholds, and the requests behind it.

SQL Query Tracking

Track SQL query performance with slow query identification, N+1 detection, and configurable thresholds. Analyze a query’s EXPLAIN plan from its detail page.

Background Job Monitoring

Job tracking with execution monitoring, queue wait time, failure analysis, and performance metrics across all ActiveJob adapters.

Exception Tracking

Capture unhandled exceptions from web requests and background jobs, group them by class and location, and review backtraces with source context and filtered request params. Mark groups resolved or ignored, and copy an LLM-ready summary. Opt-in via config.track_exceptions = true. See Exception Tracking.

Historical Comparison

Rails Pulse compares each route, query, and job against its own history, not just a fixed threshold. Detail pages show how the current period compares to the subject’s normal and, when a regression is detected, when it started. See Historical Comparison.

Deployment Tracking

Record deployments from CI/CD or a rake task. They appear as markers on every chart, are listed on the Deployments page, and stamp each exception occurrence with the revision that was live. See Deployment Tracking.

Storage Status

A Storage page shows how full each Rails Pulse table is relative to its cap, disk usage, retention settings, and when cleanup and summaries last ran.

Background Job Tracking

Rails Pulse provides universal job tracking compatible with all ActiveJob adapters:

  • Universal job tracking compatible with all ActiveJob adapters
  • Monitor job performance, failures, and retries
  • Track individual job executions with detailed metrics
  • View operations and SQL queries executed during jobs
  • Configurable privacy controls for job arguments
  • Job failure messages are redacted using your filter_parameters

Supported Adapters

Works seamlessly with:

  • Sidekiq - Enhanced tracking via custom middleware
  • Solid Queue - Universal ActiveJob tracking
  • Good Job - Universal ActiveJob tracking
  • Delayed Job - Enhanced tracking via custom plugin
  • Resque - Universal ActiveJob tracking
  • Any ActiveJob adapter - Falls back to universal tracking

Opt-in: Job tracking is disabled by default. Enable it with config.track_jobs = true in your initializer to access the jobs dashboard at /rails_pulse/jobs, where you can view aggregate metrics, individual executions, and filter by time range, status, queue, and performance thresholds.

Developer Experience

Zero Configuration

Start collecting performance data immediately after installation with sensible defaults. No dashboards to build, no query language to learn.

Beautiful Interface

Modern, responsive design with dark/light mode. Built with Stimulus controllers and plain server-rendered HTML, no frontend framework.

Minimal Overhead

Instrumentation piggybacks on ActiveSupport::Notifications, and tracking writes happen on a background thread after the response is sent. See Performance Impact.

Secure by Default

Authentication is on outside development and test, auth hooks fail closed, exception messages and job failures are redacted, and the dashboard is CSP-compliant.

Organization & Filtering

Rails Pulse includes a flexible tagging system for organizing and filtering your performance data:

  • Tag routes, requests, queries, jobs, and job runs with custom labels
  • Filter performance data by custom tags
  • Organize monitoring data by environment, priority, or custom categories
  • Tags appear as badges in all data tables for quick visual identification

Learn more about the tagging system in the Tagging documentation.

Technology Stack

Rails Pulse is built using modern, battle-tested technologies:

Frontend Technologies

  • Stimulus - Small, focused controllers for charts, menus, popovers, sorting, filtering, and clipboard actions on top of server-rendered HTML
  • flatpickr - Date range picker for custom time ranges
  • Floating UI - CSP-safe positioning for popovers and menus
  • Hand-written CSS - Component stylesheets with no CSS framework, bundled and minified with esbuild and PostCSS

Data Visualization

  • Apache ECharts - Interactive charting, tree-shaken to only the chart types the dashboard uses (759 KB bundle, 248 KB gzipped)
  • Lucide Icons - Consistent iconography with a pre-compiled SVG bundle

Asset Management

  • Pre-compiled Assets - All CSS, JavaScript, and icons bundled into the gem
  • No pipeline registration - Assets are not registered with Sprockets or Propshaft, so they are never re-minified by the host. assets:precompile copies digested files into public/assets for asset_host and CDN setups; development serves them from /rails-pulse-assets/<version>/
  • CSP-Safe Implementation - Secure DOM methods and nonce-based asset loading

Multiple Database Support

Rails Pulse supports multiple database backends:

  • SQLite - Perfect for development and small applications
  • PostgreSQL - Production-ready with excellent performance
  • MySQL - Full compatibility with MySQL (MariaDB is not supported)

You can store Rails Pulse data in your main database or use a separate dedicated database for complete isolation.

See the Database Setup documentation for configuration options.

Next Steps

Setup Authentication

Secure your monitoring dashboard with flexible authentication options.

Configure Auth →

Advanced Configuration

Customize thresholds, tagging, and data retention policies.

View Advanced →