Skip to content
CAI
Produce a survey ↗Verify a survey

CanCanCommunity/cancancan

CanCanCan is a Ruby gem that provides authorization and access control for Rails applications. It allows developers to define user permissions and validates them against controller actions and model attributes. The system supports multiple Rails and ActiveRecord versions, offering configurable SQL query strategies for efficient database access. It also includes generators to scaffold ability classes and enforces code quality through automated testing and linting.

67.5

Adequate · 2 August 2026

2.5k

lines of production code

Ruby

primary language

3

bus factor · 241 authors in all

3

measurements over time

CAI band scale
CAI trend line

How it got here

2009 · CanCanCan rebrand and modularization

The project was rebranded from CanCan to CanCanCan, introducing a more modular and extensible architecture for handling access control rules. This period focused on refactoring internal authorization logic into dedicated matcher and controller resource classes, while updating the build infrastructure and test suite for modern Ruby and RSpec versions.

5 changes

2010 · CanCan authorization and adapter refactoring

This period focused on enhancing the CanCan authorization library by introducing a Rails generator for creating ability classes and refactoring the core model adapters. The refactoring established a modular, version-specific architecture to improve compatibility with Rails 4 through 7.2, supported by comprehensive test coverage for the new adapter structure.

5 changes

2014–2021 · Rails 6/7 compatibility and query optimization

This period focused on expanding compatibility with modern Rails versions (6.0 through 7.1) and enhancing the library's SQL query generation strategies for improved performance. It also introduced features like action aliasing and strong parameter support, alongside test infrastructure improvements to support these changes.

4 changes

CAI lens gauges

Survey your own repository

CanCanCommunity/cancancan 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.

Survey a repository

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 8c1bf153a3 — 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.
CAI link cards