Notable
๐ ๐ ๐
Notable tracks notable requests and background jobs and stores them in your database. What makes a request or job notable? There are a number of default situations, but ultimately you decide what interests you.
By default, Notable tracks:
- errors
 - 404s
 - slow requests and jobs
 - timeouts
 - validation failures
 - CSRF failures
 - unpermitted parameters
 - blocked and throttled requests
 
You can track custom notes as well.
๐ Battle-tested at Instacart
Installation
Add this line to your applicationโs Gemfile:
gem "notable"And run:
rails generate notable:requests
rails generate notable:jobs
rails db:migrateTo explore the data, check out Blazer.
How It Works
A Notable::Request is created for:
- errors
 - 404s
 - slow requests
 - timeouts from Slowpoke
 - validation failures
 - CSRF failures
 - unpermitted parameters
 - blocked and throttled requests from Rack Attack
 
A Notable::Job is created for:
- errors
 - slow jobs
 - validation failures
 
Create a custom note inside a request or job with:
Notable.track("Note Type", "Optional extra info")Customization
Disable tracking in certain environments
Notable.enabled = Rails.env.production?Requests
Set slow threshold
Notable.slow_request_threshold = 5.secondsCustom user method
Notable.user_method = lambda do |env|
  env["warden"].try(:user) || env["action_controller.instance"].try(:current_visit)
endCustom track method
Notable.track_request_method = lambda do |data, env|
  Notable::Request.create!(data)
endSkip tracking CSRF failures
skip_before_action :track_unverified_requestAnonymize IP addresses
Notable.mask_ips = trueJobs
Set slow threshold
Notable.slow_job_threshold = 60.secondsTo set a threshold for a specific job, use:
class CustomJob < ApplicationJob
  def notable_slow_job_threshold
    5.minutes
  end
endCustom track method
Notable.track_job_method = lambda do |data|
  Notable::Job.create!(data)
endHistory
View the changelog
Contributing
Everyone is encouraged to help improve this project. Here are a few ways you can help:
- Report bugs
 - Fix bugs and submit pull requests
 - Write, clarify, or fix documentation
 - Suggest or add new features
 
To get started with development:
git clone https://github.com/ankane/notable.git
cd notable
bundle install
bundle exec rake test