mislav/will_paginate
58.8
Adequate · 26 September 2026
1.3k
lines of production code
Ruby
primary language
4
measurements over time
What this system is
Features
Introduce new automation scripts for local and CI testing
Added four new executable scripts to streamline the development and testing workflow. The \script/bootstrap\ script automates the installation of system dependencies (PostgreSQL, MySQL) and configures the Ruby environment for local development. The \script/test\_all\ script provides a unified way to run the full test suite across different database backends (SQLite, MySQL, PostgreSQL) and non-Rails specs, ensuring consistent test execution. The \script/ci-matrix\ script dynamically generates the CI matrix configuration by evaluating Ruby version compatibility for each Rails version, preventing invalid test combinations. The \script/release\ script automates the gem release process, including versioning, tagging, and publishing to RubyGems and GitHub.
script · high confidence
Behavioural changes
Refactored pagination rendering with framework-specific link renderers
The pagination view helpers have been refactored to support multiple web frameworks (ActionView, Hanami, Sinatra) through a shared base class and framework-specific link renderers. This change improves accessibility by adding ARIA labels and roles to the generated HTML, and ensures query parameters from POST requests are preserved in pagination links. The \paginated\_section\ helper now wraps content with pagination links, and the \LinkRenderer\ is now extensible via subclassing for each framework.
_lib/will\_paginate/view\helpers · high confidence
Support for loading will\_paginate as a plugin
The library now supports being loaded as a plugin, ensuring that Active Record, Action Controller, and Action View helpers are correctly initialized even when not running as a standard gem. This change allows the pagination functionality to work correctly in environments where the library is included as a plugin rather than a gem dependency.
(repo-wide) · high confidence
Updated test environment configurations for modern Ruby and Rails versions
The test environment setup has been updated to support newer versions of Ruby and Rails, including Rails 7.1 and Ruby 3.3, while maintaining compatibility with older versions down to Rails 5.0. The configuration now uses RSpec 3.12 and Mocha 2.0, and includes specific workarounds for Ruby 2.4 compatibility with Nokogiri and Loofah. Additionally, the environments directory now contains dedicated Gemfile configurations for each supported Rails version (5.0 through 7.0/7.1), ensuring that tests run against the appropriate dependencies for each environment.
environments · medium confidence
Will Paginate 3.0 drops Rails 2.3 support and removes legacy pagination code
The library now requires Rails 3.0 or newer, raising an error on older versions, and removes the legacy \will\_paginate\ helper method and associated pagination logic, replacing it with a modular, framework-agnostic structure that supports Sinatra and modern Rails integration via Railties.
lib · high confidence
Will Paginate 4.0.0: Modular architecture and new collection types
The library has been refactored into a modular structure, introducing new files for core components like \page\_number.rb\, \collection.rb\, and \per\_page.rb\. This change enables loading specific parts of Will Paginate (such as \WillPaginate::Collection\) without requiring the entire gem, and supports multiple ORMs including ActiveRecord, Mongoid, and Sequel. The \PageNumber\ class now validates page numbers, and the \Collection\ class provides a standardized interface for pagination data. Additionally, the \ViewHelpers\ module is updated to support global configuration via \pagination\_options\ and includes a \page\_entries\_info\ helper for displaying entry counts.
_lib/will\paginate · high confidence
Test coverage
Add test fixtures for User, Developer, Project, and Reply models; Added RSpec 3 test suite for non-Rails integrations; Added comprehensive RSpec test suite for view helpers; Added comprehensive specs for ActiveRecord pagination; Added comprehensive test suite for pagination core classes.
Dependencies
Add Gemfile and update gemspec for Rails 7.1 and modern dependencies
The project now includes a Gemfile that pins Rails 7.1.3 (via activerecord and actionpack) and specifies modern versions for testing dependencies like RSpec 3.12, Mocha 2.0, and database adapters (sqlite3, mysql2, pg). The will\_paginate gemspec has been updated to require Ruby 2.0+, include comprehensive metadata (homepage, license, issue tracker, documentation URIs), and use git ls-files to determine the package contents.
(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
This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.
Score
- CAI 51 → 59 (+7.6)
- Rubric changed (rubric-2026.08.15 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 100 → 98 (-1.3)
- Architecture 94 → 69 (-25.1)
- Maturity 57 → 48 (-9.8)
- Readiness 30 → 56 (+25.9)
- Security 71 → 94 (+23.5)
Resolved (9)
- Coverage not measured — test suite did not build
- Dimension evaluation failed
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- No exposed public API
- No tests found
- Test reliability not included
New (24)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- Duplicate constructor signatures. WillPaginate.PageNumber is listed as a type with a method PageNumber(value, name), and PageNumber is also listed as a type with PageNumber.initialize(value, name). This suggests either a documentation duplication or an inconsistency in how the constructor is exposed (static factory vs instance initializer).
- FixmeComment (spec/finders/active_record_spec.rb)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- Inconsistent naming for setting the page size. RelationMethods exposes both limit and per_page. Mongoid and Sequel only expose per_page. limit is a generic ActiveRecord method, while per_page is specific to pagination. Exposing both in RelationMethods is redundant.
- Inconsistent naming for total entry count: RelationMethods exposes a property total_entries, Collection exposes a property total_entries, but CollectionMethods exposes a setter total_entries=. While the property is consistent, the presence of a setter on the collection interface without a corresponding getter in the same scope (relying on the property) is slightly confusing, but the bigger issue is below.
- Low CVE: [GHSA redacted] (Gemfile)
- Medium IaC: WD-COMPOSE-0002 (docker-compose.yml)
- Medium IaC: WD-COMPOSE-0002 (docker-compose.yml)
- Medium IaC: WD-COMPOSE-0002 (docker-compose.yml)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- Orphaned files with no living knowledge
- Redundant and inconsistent methods for retrieving the total number of items. RelationMethods offers count, size, and total_entries (property). CollectionMethods (for Sequel/Mongoid) only offers total_entries(). Collection (the core class) has a total_entries property. This creates a fragmented API where different backends expose different methods for the same concept (total count of records across all pages).
- TodoComment (lib/will_paginate/active_record.rb)
- TodoComment (spec/collection_spec.rb)
- …and 4 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
mislav/will_paginate 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 26 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 50017c3eb0712e7b3a53268a81e81a184b7a49f6 — 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-7c1cb6328e11.