Multi-user non-linear history tracking, auditing, undo, and redo for Mongoid documents and embedded relations.
Mongoid History is a Ruby gem that provides multi-user, non-linear history tracking for Mongoid documents, including embedded relations. It enables auditing, undo, and redo operations by storing all changes in a single collection, making it suitable for applications requiring detailed change logs and collaborative editing features.
Ruby developers using Mongoid with MongoDB who need robust auditing, versioning, or undo/redo functionality in their applications, particularly for collaborative or compliance-sensitive projects.
Developers choose Mongoid History for its flexible tracking configuration, support for embedded documents, and multi-user undo/redo capabilities, which are not typically available in basic Mongoid setups, making it a comprehensive solution for change tracking and auditing.
Multi-user non-linear history tracking, auditing, undo, redo for mongoid.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Stores all document changes in a single collection, including embedded documents via association paths, enabling comprehensive audit trails without linear constraints.
Supports undo and redo operations in any order for multiple users, with each action creating a new history track, ideal for collaborative editing and vandalism prevention.
Allows tracking of specific fields, all fields, or embedded relations with customizable options like track_create, track_update, and track_destroy, plus conditional logic with :if and :unless.
Provides methods like tracked_changes and tracked_edits to easily format and display changes in views, simplifying audit trail implementation for administrative dashboards.
Exclusively designed for Mongoid with MongoDB, creating vendor lock-in and making it unsuitable for applications using other ORMs or databases.
Tracking every change in a separate collection can lead to database bloat and slower write operations, especially in applications with high-frequency updates, as admitted in the README's thread safety notes.
Requires defining tracker classes, setting modifier fields, and configuring tracking options, which can be error-prone and steep for beginners or in complex models with embedded relations.