mongoid-archivable 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.ruby-version +1 -0
- data/README.md +10 -0
- data/Rakefile +6 -0
- data/lib/mongoid/archivable/version.rb +1 -1
- data/lib/mongoid/archivable.rb +15 -2
- data/lib/mongoid-archivable.rb +1 -0
- data/mongoid-archivable.gemspec +3 -2
- metadata +23 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c887499fc91768e2d5545a2c6dbf439e08885e2c
|
4
|
+
data.tar.gz: 895ff222f43ed6753a1f7ad0e1c9be176ff0c15e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9ad8ecb9ba0cf5b05bea72627f93075af85f9d3a152efc5df806b6fced2dfe369fd654f43d228f78338d7fd9155eb76a320ae9b538dd02101cb74edd1e4e364c
|
7
|
+
data.tar.gz: c569029340b31e767cdab0cd24e2b0e3610baa80ed2001e3ff8276865545658202bf5c5b60cecede36b80cb417878c3bd83df4f2639861a9b5b121939e4fd3df
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.1.4
|
data/README.md
CHANGED
@@ -2,6 +2,8 @@
|
|
2
2
|
|
3
3
|
Moves Mongoid documents to an archive instead of destroying them.
|
4
4
|
|
5
|
+
[ ](https://codeship.com/projects/74192)
|
6
|
+
|
5
7
|
## Installation
|
6
8
|
|
7
9
|
Add this line to your application's Gemfile:
|
@@ -28,6 +30,8 @@ include Mongoid::Archivable
|
|
28
30
|
|
29
31
|
Now a `destroy` of a document will move the document to an Archive collection, namespaced under the document you're destroying.
|
30
32
|
|
33
|
+
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.
|
34
|
+
|
31
35
|
## Example
|
32
36
|
|
33
37
|
```
|
@@ -36,6 +40,12 @@ user.destroy
|
|
36
40
|
|
37
41
|
User.count # => 0
|
38
42
|
User::Archive.count # => 1
|
43
|
+
|
44
|
+
archived_user = User::Archive.last
|
45
|
+
archived_user.restore
|
46
|
+
|
47
|
+
User.count # => 1
|
48
|
+
User::Archive.count # => 1
|
39
49
|
```
|
40
50
|
|
41
51
|
## Development
|
data/Rakefile
CHANGED
data/lib/mongoid/archivable.rb
CHANGED
@@ -1,14 +1,27 @@
|
|
1
|
-
require
|
1
|
+
require 'active_support/concern'
|
2
2
|
|
3
3
|
module Mongoid
|
4
4
|
module Archivable
|
5
5
|
|
6
6
|
extend ActiveSupport::Concern
|
7
7
|
|
8
|
+
module Restoration
|
9
|
+
# Restores the archived document to its former glory.
|
10
|
+
def restore
|
11
|
+
document = self.class.to_s.split('::').first # Turns User::Archive into User.
|
12
|
+
|
13
|
+
self.class.const_get(document).create(attributes.except("_id", "original_id", "archived_at")) do |doc|
|
14
|
+
doc.id = self.original_id
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
8
19
|
included do
|
9
20
|
self.const_set("Archive", Class.new)
|
10
|
-
self.const_get("Archive").
|
21
|
+
self.const_get("Archive").class_eval do
|
22
|
+
include Mongoid::Document
|
11
23
|
include Mongoid::Attributes::Dynamic
|
24
|
+
include Mongoid::Archivable::Restoration
|
12
25
|
field :archived_at, type: Time
|
13
26
|
field :original_id, type: String
|
14
27
|
end
|
data/lib/mongoid-archivable.rb
CHANGED
data/mongoid-archivable.gemspec
CHANGED
@@ -22,6 +22,7 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.add_dependency "mongoid"
|
23
23
|
spec.add_dependency "activesupport", ">= 4.0.0"
|
24
24
|
|
25
|
-
spec.add_development_dependency "bundler"
|
26
|
-
spec.add_development_dependency "rake"
|
25
|
+
spec.add_development_dependency "bundler"
|
26
|
+
spec.add_development_dependency "rake"
|
27
|
+
spec.add_development_dependency "rspec", "~> 3.2.0"
|
27
28
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongoid-archivable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joost Baaij
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-04-
|
11
|
+
date: 2015-04-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mongoid
|
@@ -42,30 +42,44 @@ dependencies:
|
|
42
42
|
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
58
72
|
requirements:
|
59
73
|
- - "~>"
|
60
74
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
75
|
+
version: 3.2.0
|
62
76
|
type: :development
|
63
77
|
prerelease: false
|
64
78
|
version_requirements: !ruby/object:Gem::Requirement
|
65
79
|
requirements:
|
66
80
|
- - "~>"
|
67
81
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
82
|
+
version: 3.2.0
|
69
83
|
description: Move Mongoid documents to an archive instead of destroying them.
|
70
84
|
email:
|
71
85
|
- joost@spacebabies.nl
|
@@ -75,6 +89,7 @@ extra_rdoc_files: []
|
|
75
89
|
files:
|
76
90
|
- ".gitignore"
|
77
91
|
- ".rspec"
|
92
|
+
- ".ruby-version"
|
78
93
|
- CODE_OF_CONDUCT.md
|
79
94
|
- Gemfile
|
80
95
|
- LICENSE.txt
|