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 = truein 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:precompilecopies digested files intopublic/assetsforasset_hostand 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.
Advanced Configuration
Customize thresholds, tagging, and data retention policies.