paper-trail-gem/paper_trail
PaperTrail is a Ruby gem that provides versioning and change tracking for ActiveRecord models. It automatically captures and stores the state of records across create, update, and destroy events, allowing users to view history, reify past states, and query for specific changes. The system supports flexible serialization formats like JSON and YAML, handles complex data types including PostgreSQL arrays and encrypted attributes, and integrates with Rails, RSpec, and Cucumber for testing and request context management.
66.6
Adequate · 2 August 2026
3k
lines of production code
Ruby
primary language
2
bus factor · 262 authors in all
3
measurements over time
How it got here
2009–2013 · Modular architecture and modernization
This period focused on restructuring the PaperTrail codebase into a modular, maintainable architecture with explicit configuration and request-scoped state management. The team modernized the development environment, replaced legacy test infrastructure with RSpec, and introduced a JSON serializer alongside improved framework integrations.
13 changes
2014–2017 · Rails integration and serialization refactoring
This period focused on modernizing PaperTrail's integration with Rails, including restructuring the controller module and introducing a default ActiveRecord Version model. Significant effort was also dedicated to modularizing attribute serialization logic and adding comprehensive test coverage for the new dummy application and various serializers.
25 changes
2018–2023 · Event modularization and migration tooling
This period focused on refactoring the internal event handling into a modular architecture and introducing new generators for custom version tables, including support for UUIDs and MySQL compatibility. The work also expanded test coverage for encryption and query filtering, while adding support for the latest Rails versions.
8 changes
Survey your own repository
paper-trail-gem/paper_trail 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 the surveyor at a repository you know and see whether you agree with it.
About this page
- The description of this project is derived from its own commit history, not from its README.
- The score is its highest published measurement, taken on 2 August 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 098058ae47 — the exact code this score is about.
- Scored under rubric rubric-2026.08.18. Score the same commit under that rubric and you get the same number.