A composable, extensible, and performant authorization framework for Ruby and Rails applications.
Action Policy is an authorization framework for Ruby and Ruby on Rails applications that provides a structured way to manage access control. It uses resource-specific policy classes to define rules, helping developers enforce security and permissions in a clear, maintainable manner. The framework is designed to be composable, extensible, and performant, making it suitable for both simple and complex authorization needs.
Ruby and Rails developers building applications that require robust authorization logic, such as multi-tenant systems, admin panels, or any app with user roles and permissions.
Developers choose Action Policy for its performance optimizations, flexibility in defining rules, and seamless integration with Rails, while also supporting non-Rails Ruby projects. Its composable design and extensibility make it a powerful alternative to other authorization libraries.
Authorization framework for Ruby/Rails applications
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Designed with minimal overhead, ensuring fast authorization checks even in high-load scenarios, a key emphasis in the README.
Allows building complex logic by combining simple rules, making policies flexible and maintainable, as highlighted in the features.
Provides helpers like `authorize!` and `allowed_to?` for controllers and views, integrating smoothly with Rails workflows out of the box.
Supports customizations and has official integrations with GraphQL Ruby and Graphiti, enabling extended functionality beyond core authorization.
Requires defining separate policy classes for each resource, which can be verbose and time-consuming for applications with many models.
Lacks native support for hierarchical roles or attribute-based permissions, often necessitating additional custom code for complex scenarios.
While extensible, the community and third-party plugins are not as extensive as more established alternatives like CanCanCan, potentially limiting ready-made solutions.