No release in over 3 years
Low commit activity in last 3 years
Move Mongoid documents to an archive instead of destroying them.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

>= 0
>= 0

Runtime

>= 5.0
 Project Readme

Mongoid::Archivable

Build Status Gem Version

Moves Mongoid documents to an archive instead of destroying them.

Installation

Add this line to your application's Gemfile:

gem 'mongoid-archivable'

And then execute:

$ bundle

Or install it yourself as:

$ gem install mongoid-archivable

Usage

In any Mongoid document, do this:

include Mongoid::Archivable

Now a destroy of a document will move the document to an Archive collection, namespaced under the document you're destroying.

You can restore an archive as well. Send the .restore message to it. For now the archived document is retained, but that might change in the future.

Example

user = User.create! name: "Example User"
user.destroy

User.count # => 0
User::Archive.count # => 1

archived_user = User::Archive.last
archived_user.restore

User.count # => 1
User::Archive.count # => 1

Standalone Storage

By default, the archived documents will be stored in primary client and database. If you want to use different database or client for all archived documents, you can create the following middleware:

# Rails : config/initializers/mongoid_archivable.rb
# Ruby : config/mongoid_archivable.rb

Mongoid::Archivable.configure do |config|
  config.database = "archives"
  config.client = "secondary"
end

But if you only want to use different database or client in spesific Mongoid document, you can use this approach:

class User
  include Mongoid::Document
  include Mongoid::Archive
  archive_in database: 'achives', client: 'secondary'
end

In your mongoid.yml will show like this:

development:
  clients:
    default:
      database: project_development
      hosts:
        - localhost:27017
      options:
        <<: *client_options
    secondary:
      database: archives
      hosts:
        - localhost:27018
      options:
        <<: *client_options

Development

Please report any issues to the GitHub issue tracker.