{"id":13880011,"url":"https://github.com/ankane/notable","last_synced_at":"2025-11-17T14:03:48.035Z","repository":{"id":24918449,"uuid":"28335392","full_name":"ankane/notable","owner":"ankane","description":"Track notable requests and background jobs","archived":false,"fork":false,"pushed_at":"2025-10-22T05:15:09.000Z","size":103,"stargazers_count":450,"open_issues_count":0,"forks_count":15,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-11-13T09:29:22.341Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ankane.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2014-12-22T11:06:36.000Z","updated_at":"2025-11-04T09:51:00.000Z","dependencies_parsed_at":"2024-05-21T20:54:00.409Z","dependency_job_id":"0e9d6f52-aae3-47df-a14a-c932db1478f1","html_url":"https://github.com/ankane/notable","commit_stats":{"total_commits":151,"total_committers":4,"mean_commits":37.75,"dds":"0.019867549668874163","last_synced_commit":"e9191d2f0b33e509dbef944911c42d08779f1e3c"},"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/ankane/notable","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ankane%2Fnotable","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ankane%2Fnotable/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ankane%2Fnotable/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ankane%2Fnotable/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ankane","download_url":"https://codeload.github.com/ankane/notable/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ankane%2Fnotable/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":284634545,"owners_count":27038515,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-11-15T02:00:06.050Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-06T08:02:43.400Z","updated_at":"2025-11-17T14:03:48.016Z","avatar_url":"https://github.com/ankane.png","language":"Ruby","funding_links":[],"categories":["Ruby"],"sub_categories":[],"readme":"# Notable\n\n:star2: :star2: :star2:\n\nNotable 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.\n\nBy default, Notable tracks:\n\n- errors\n- 404s\n- slow requests and jobs\n- timeouts\n- validation failures\n- CSRF failures\n- unpermitted parameters\n- blocked and throttled requests\n\nYou can track custom notes as well.\n\n:tangerine: Battle-tested at [Instacart](https://www.instacart.com/opensource)\n\n[![Build Status](https://github.com/ankane/notable/actions/workflows/build.yml/badge.svg)](https://github.com/ankane/notable/actions)\n\n## Installation\n\nAdd this line to your application’s Gemfile:\n\n```ruby\ngem \"notable\"\n```\n\nAnd run:\n\n```sh\nrails generate notable:requests\nrails generate notable:jobs\nrails db:migrate\n```\n\nTo explore the data, check out [Blazer](https://github.com/ankane/blazer).\n\n## How It Works\n\nA `Notable::Request` is created for:\n\n- errors\n- 404s\n- slow requests\n- timeouts from [Slowpoke](https://github.com/ankane/slowpoke)\n- validation failures\n- [CSRF failures](https://guides.rubyonrails.org/security.html#cross-site-request-forgery-csrf)\n- unpermitted parameters\n- blocked and throttled requests from [Rack Attack](https://github.com/kickstarter/rack-attack)\n\nA `Notable::Job` is created for:\n\n- errors\n- slow jobs\n- validation failures\n\nCreate a custom note inside a request or job with:\n\n```ruby\nNotable.track(\"Note Type\", \"Optional extra info\")\n```\n\n## Customization\n\nDisable tracking in certain environments\n\n```ruby\nNotable.enabled = Rails.env.production?\n```\n\n### Requests\n\nSet slow threshold\n\n```ruby\nNotable.slow_request_threshold = 5.seconds\n```\n\nCustom user method\n\n```ruby\nNotable.user_method = lambda do |env|\n  env[\"warden\"].try(:user) || env[\"action_controller.instance\"].try(:current_visit)\nend\n```\n\nCustom track method\n\n```ruby\nNotable.track_request_method = lambda do |data, env|\n  Notable::Request.create!(data)\nend\n```\n\nSkip tracking CSRF failures\n\n```ruby\nskip_before_action :track_unverified_request\n```\n\nAnonymize IP addresses\n\n```ruby\nNotable.mask_ips = true\n```\n\n### Jobs\n\nSet slow threshold\n\n```ruby\nNotable.slow_job_threshold = 60.seconds\n```\n\nTo set a threshold for a specific job, use:\n\n```ruby\nclass CustomJob \u003c ApplicationJob\n  def notable_slow_job_threshold\n    5.minutes\n  end\nend\n```\n\nCustom track method\n\n```ruby\nNotable.track_job_method = lambda do |data|\n  Notable::Job.create!(data)\nend\n```\n\n## History\n\nView the [changelog](https://github.com/ankane/notable/blob/master/CHANGELOG.md)\n\n## Contributing\n\nEveryone is encouraged to help improve this project. Here are a few ways you can help:\n\n- [Report bugs](https://github.com/ankane/notable/issues)\n- Fix bugs and [submit pull requests](https://github.com/ankane/notable/pulls)\n- Write, clarify, or fix documentation\n- Suggest or add new features\n\nTo get started with development:\n\n```sh\ngit clone https://github.com/ankane/notable.git\ncd notable\nbundle install\nbundle exec rake test\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fankane%2Fnotable","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fankane%2Fnotable","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fankane%2Fnotable/lists"}