Skip to content
CAI
Software that uses CAICheck a score

indirect/rails-footnotes

58.0

Adequate · 19 September 2026

1.2k

lines of production code

Ruby

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

Rails Footnotes is a debugging library for Ruby on Rails applications that injects detailed request information into the browser view. It provides customizable panels displaying environment variables, controller filters, SQL queries, and instance variables to aid in development and performance analysis. The system supports a wide range of Rails versions through modernized, thread-safe architecture and comprehensive configuration options.

How it got here

2007–2009 — Modernization and compatibility updates

7 changes.

The project underwent extensive refactoring to support modern Rails versions (3 through 7.1) and Ruby 3.0+, replacing legacy plugin structures with Gemfile-based installation and updating internal APIs for thread safety. Legacy components, including old test suites and rescue templates, were removed while new debug features like Filters and Queries notes were introduced to enhance developer visibility into application performance and execution flow.

2011 — Rails Footnotes v7.1.1 modernization

5 changes.

This period focused on modernizing the Rails Footnotes gem by refactoring its internal architecture for better maintainability and ensuring compatibility with Rails 6+. The work included adding a comprehensive RSpec test suite to cover core components and note types, as well as introducing an install generator with configurable options to simplify user setup.

2014–2021 — Rails compatibility and test infrastructure

5 changes.

The project focused on ensuring compatibility across multiple Rails versions by expanding Gemfile support and refactoring the LogNote feature to use a custom logger. Significant effort was also dedicated to strengthening test coverage through new controller specs, integration test fixtures, and the addition of Bundler binstubs for consistent tool execution.

Features

Added Bundler binstubs for Rake and RSpec

The project now includes executable binstubs for Rake and RSpec in the bin directory. These scripts ensure that the correct versions of these tools are used by loading them from the project's bundled gems, facilitating consistent execution of tasks and tests across different environments.

bin · high confidence

Added install generator for Rails Footnotes

Users can now run the Rails Footnotes install generator to automatically copy the configuration initializer to their application's config/initializers directory, simplifying the setup process.

_lib/generators/rails\footnotes · high confidence

New Filters and Queries debug notes for Rails footnotes

This change introduces two new debug panels to the Rails Footnotes interface. The Filters Note displays the controller's filter chain, detailing which filters apply to specific actions by using a mock controller to evaluate conditions. The Queries Note provides a detailed breakdown of SQL queries executed during the request, including execution time, SQL text, and stack traces, with configurable thresholds to alert on high query counts or slow database times. It also supports ignoring specific system queries via regex patterns and integrates with Rails' query notification system.

rails-footnotes · high confidence

Behavioural changes

Log note now uses a custom logger implementation

The LogNote feature now relies on a new internal NoteLogger class instead of the previous ActiveSupport-based logging mechanism. This custom logger captures log entries directly into an array, ensuring the log note functions correctly across various Rails versions (including 3.2, 3, 4, and 7.1) without depending on ActiveSupport's logger availability.

_lib/rails-footnotes/notes/log\note · high confidence

Rails Footnotes generator template with configurable options

The generator template for the Rails Footnotes initializer has been updated to include additional configuration options such as lock\_top\_right, font\_size, default\_limit, and multiple\_notes, allowing users to customize the behavior and appearance of footnotes directly from the generated config file. The template also ensures the setup block is only executed if the Footnotes gem is defined and responds to the setup method, improving safety during initialization.

lib/generators/templates · high confidence

Rails Footnotes notes refactored for modern Rails compatibility

The debug notes in lib/rails-footnotes/notes have been rewritten to support Rails 3 through 7.1. Key changes include using ActiveSupport::BroadcastLogger for log interception in Rails 7.1+, handling ActionController::Parameters via to\_unsafe\_h in Rails 5+, and updating route filtering to use ActionDispatch::Routing. The AssignsNote now limits ActiveRecord relations, ignores @marked\_for\_same\_origin\_verification, and displays class names. Other notes (Cookies, Params, Session) now use tables, and the EnvNote includes a link to the Cookies tab.

lib/rails-footnotes/notes · high confidence

Rails Footnotes v3.0: Modernized API and Thread-Safety

The library has been refactored to support Rails 2.0+ with a new, cleaner configuration API. The old \textmate\_footnotes\ and \textmate\_backtracer\ files are removed in favor of a new \rails-footnotes.rb\ entry point that uses \thread\_mattr\_accessor\ for thread-safe state management. Users can now configure options like \font\_size\, \default\_limit\, and \lock\_top\_right\ via \Footnotes.setup\, and enable/disable the feature programmatically or via a \.rails\_footnotes\ dotfile. The extension is now loaded via \ActiveSupport.on\_load(:action\_controller)\ to avoid premature autoloading.

lib · high confidence

Rails Footnotes v4.1.8 release and repository restructuring

This update releases Rails Footnotes v4.1.8, which fixes undefined method errors with Log4r and Rails 3.2, resolves Rails 5 compatibility issues, and corrects bad timing display in SQL notes. The repository has been restructured for modern usage: the legacy \init.rb\ plugin initializer is removed in favor of a Gemfile-based installation with a generated initializer, the README is converted to Markdown, and a \.ruby-version\ file is added to specify Ruby 3.3.1 support. Additionally, new configuration files including \.gitignore\, \.rspec.example\, \Rakefile\, and \renovate.json\ are introduced to standardize development workflows.

(repo-wide) · high confidence

Rails Footnotes v7.1.1: Modernized architecture and new configuration options

This release updates the library to version 7.1.1, introducing a refactored internal structure that extracts the controller extension and error-handling logic into dedicated modules (\extension.rb\, \each\_with\_rescue.rb\) for better maintainability. It adds new configuration options to \Footnotes::Filter\, allowing users to set a \default\_limit\ for ActiveRecord relations, customize the \font\_size\, and enable a \lock\_top\_right\ toggle button for the notes panel. The implementation also migrates class attributes to thread-safe accessors (\thread\_cattr\_accessor\) and updates the controller integration to use Rails \before\_action\ and \after\_action\ hooks, ensuring compatibility with modern Rails versions while removing support for Rails \<6.

lib/rails-footnotes · high confidence

Removal of legacy template error rescue view

The \template\_error.rhtml\ rescue template has been removed from the application. This file previously provided a specific error page for template rendering failures, displaying the exception class, controller/action details, and source code context. Its removal indicates a change in how template errors are handled or displayed to users, likely shifting to a different rescue mechanism or default error page.

templates · high confidence

Test coverage

Added RSpec test suite for Rails Footnotes; Added controller specs for footnotes integration; Added test coverage for Rails Footnotes note components; Added test fixtures for asset pipeline and view rendering; Removal of legacy TextMate footnotes test suite.

Dependencies

Expanded Rails version support for testing

The project now includes dedicated Gemfiles to support testing against multiple Rails versions, specifically 3.2.22, 4.0.x, 4.1.x, 4.2.x, and the Rails edge version. This allows the library to verify compatibility across these specific framework releases.

gemfiles · high confidence

Rails Footnotes 7.1.1 dependency update

The gem's dependencies have been updated to support Rails 7.1.5.1 and Ruby 3.0+. Key dependency bumps include nokogiri to 1.17.2, sqlite3 to 2.0, rspec-rails to 7.1, and rack to 3.1.8, ensuring compatibility with the latest Rails 7.1.x releases.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 58.

Lenses

  • Code Health 99
  • Architecture 69
  • Maturity 46
  • Readiness 64
  • Security 69

Changes since last survey

  • 300 commits — 296 feature/other, 4 fixes

By area

  • (repo) — 109 commits
  • (root) — 86 commits
  • .github/workflows — 65 commits
  • lib/rails-footnotes — 26 commits
  • lib/rails-footnotes.rb — 5 commits
  • spec/footnotes_spec.rb — 2 commits
  • .github/dependabot.yml — 1 commit
  • lib/generators — 1 commit
  • lib/rails6-footnotes.rb — 1 commit
  • spec/app — 1 commit
  • spec/controllers — 1 commit
  • spec/notes — 1 commit
  • spec/spec_helper.rb — 1 commit

Notable commits

  • fix: Fix deprecation warning in specs with Rack 3.0
  • fix: Fix var_value not being changed to var_value_string for assigns notes
  • fix: Merge pull request #232 from indirect/segiddins/fix-deprecation-warning-in-specs-with-rack-3.0
  • fix: fix exception when response is Rack::File::Iterator
  • change: --- updated-dependencies: - dependency-name: step-security/harden-runner dependency-type: direct:production update-type: version-update:semver-minor ...
  • change: Add default_limit in cattr_accessor for Footnotes::Filter
  • change: Add limit to inspected assigned values only if its limit value doesn't exist
  • change: Add limit to inspected assigned values that are active record relations
  • change: Add support for Ruby 3.3
  • change: Add trusted publisher workflow
  • change: Allow default_limit to be configurable
  • change: Back to 5.0.0 of rails-footnotes
  • change: Bump README
  • change: Bump actionmailer from 7.1.4 to 7.1.4.1
  • change: Bump actionpack from 6.1.4 to 6.1.4.1
  • change: Bump actionpack from 7.1.4 to 7.1.4.1
  • change: Bump actions/checkout from 4 to 5
  • change: Bump actions/checkout from 5.0.0 to 5.0.1
  • change: Bump actions/checkout from 5.0.1 to 6.0.0
  • change: Bump actions/checkout from 5.0.1 to 6.0.0
  • …and 280 more

Architecture

  • 0 containers · 1 bounded contexts · 0 dependency edges (baseline)

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

indirect/rails-footnotes was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 19 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit a2f818a44227ae1a2ccc5bfb4d5db75b04af0331 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-b51f968c9b10.