mongoid-history 0.3.0 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.travis.yml +1 -0
- data/CHANGELOG.md +11 -5
- data/README.md +2 -2
- data/VERSION +1 -1
- data/lib/mongoid/history/trackable.rb +2 -2
- data/mongoid-history.gemspec +2 -2
- data/spec/integration/integration_spec.rb +32 -6
- metadata +3 -3
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,13 +1,19 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
0.3.1
|
2
|
+
-----
|
3
3
|
|
4
|
-
*
|
4
|
+
* [#45](https://github.com/aq1018/mongoid-history/pull/45) Fix: intermittent hash ordering issue with history_tracks - [@getaroom](https://github.com/getaroom).
|
5
|
+
* [#50](https://github.com/aq1018/mongoid-history/pull/50) Fix: tracking of array changes, undo and redo of field changes on non-embedded objects - [@dblock](https://github.com/dblock).
|
6
|
+
|
7
|
+
0.3.0 (8/21/2012)
|
8
|
+
-----------------
|
9
|
+
|
10
|
+
* [#41](https://github.com/aq1018/mongoid-history/pull/41) Mongoid 3.x support - [@zambot](https://github.com/zambot).
|
5
11
|
|
6
12
|
0.2.4 (8/21/2012)
|
7
13
|
-----------------
|
8
14
|
|
9
|
-
* [#38](https://github.com/aq1018/mongoid-history/pull/38) Fix:
|
10
|
-
* [#35](https://github.com/aq1018/mongoid-history/pull/35)
|
15
|
+
* [#38](https://github.com/aq1018/mongoid-history/pull/38) Fix: allow sub-models to be tracked by using `collection_name` as the scope - [@acant](https://github.com/acant).
|
16
|
+
* [#35](https://github.com/aq1018/mongoid-history/pull/35) Fix: sweeper references record of change, not the record changed - [@dblock](https://github.com/dblock).
|
11
17
|
|
12
18
|
0.2.3 (4/20/2012)
|
13
19
|
-----------------
|
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
mongoid-history
|
2
2
|
===============
|
3
3
|
|
4
|
-
[![Build Status](https://secure.travis-ci.org/aq1018/mongoid-history.png?branch=master)](http://travis-ci.org/aq1018/mongoid-history)
|
4
|
+
[![Build Status](https://secure.travis-ci.org/aq1018/mongoid-history.png?branch=master)](http://travis-ci.org/aq1018/mongoid-history)
|
5
5
|
|
6
6
|
Mongoid-history tracks historical changes for any document, including embedded ones. It achieves this by storing all history tracks in a single collection that you define. Embedded documents are referenced by storing an association path, which is an array of `document_name` and `document_id` fields starting from the top most parent document and down to the embedded document that should track history.
|
7
7
|
|
@@ -178,6 +178,6 @@ Contributing to mongoid-history
|
|
178
178
|
Copyright
|
179
179
|
---------
|
180
180
|
|
181
|
-
Copyright (c) 2011-2012 Aaron Qian. MIT License.
|
181
|
+
Copyright (c) 2011-2012 Aaron Qian. MIT License.
|
182
182
|
See [LICENSE.txt](https://github.com/aq1018/mongoid-history/blob/master/LICENSE.txt) for further details.
|
183
183
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.1
|
@@ -71,7 +71,7 @@ module Mongoid::History
|
|
71
71
|
|
72
72
|
module MyInstanceMethods
|
73
73
|
def history_tracks
|
74
|
-
@history_tracks ||= Mongoid::History.tracker_class.where(:scope => history_trackable_options[:scope], :association_chain => association_hash)
|
74
|
+
@history_tracks ||= Mongoid::History.tracker_class.where(:scope => history_trackable_options[:scope], :association_chain => { "$elemMatch" => association_hash })
|
75
75
|
end
|
76
76
|
|
77
77
|
# undo :from => 1, :to => 5
|
@@ -239,7 +239,7 @@ module Mongoid::History
|
|
239
239
|
modified[k] = m unless m.nil?
|
240
240
|
end
|
241
241
|
|
242
|
-
|
242
|
+
[ original, modified ]
|
243
243
|
end
|
244
244
|
|
245
245
|
end
|
data/mongoid-history.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "mongoid-history"
|
8
|
-
s.version = "0.3.
|
8
|
+
s.version = "0.3.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Aaron Qian", "Justin Grimes"]
|
12
|
-
s.date = "2012-
|
12
|
+
s.date = "2012-11-16"
|
13
13
|
s.description = "In frustration of Mongoid::Versioning, I created this plugin for tracking historical changes for any document, including embedded ones. It achieves this by storing all history tracks in a single collection that you define. (See Usage for more details) Embedded documents are referenced by storing an association path, which is an array of document_name and document_id fields starting from the top most parent document and down to the embedded document that should track history.\n\n This plugin implements multi-user undo, which allows users to undo any history change in any order. Undoing a document also creates a new history track. This is great for auditing and preventing vandalism, but it is probably not suitable for use cases such as a wiki."
|
14
14
|
s.email = ["aq1018@gmail.com", "justin.mgrimes@gmail.com"]
|
15
15
|
s.extra_rdoc_files = [
|
@@ -52,6 +52,7 @@ describe Mongoid::History do
|
|
52
52
|
|
53
53
|
field :email
|
54
54
|
field :name
|
55
|
+
field :aliases, :type => Array
|
55
56
|
track_history :except => [:email]
|
56
57
|
end
|
57
58
|
|
@@ -59,7 +60,7 @@ describe Mongoid::History do
|
|
59
60
|
include Mongoid::Document
|
60
61
|
include Mongoid::Timestamps
|
61
62
|
include Mongoid::History::Trackable
|
62
|
-
|
63
|
+
|
63
64
|
belongs_to :updated_by, :class_name => "User"
|
64
65
|
|
65
66
|
field :title
|
@@ -68,7 +69,7 @@ describe Mongoid::History do
|
|
68
69
|
end
|
69
70
|
|
70
71
|
before :each do
|
71
|
-
@user = User.create(:name => "Aaron", :email => "aaron@randomemail.com")
|
72
|
+
@user = User.create(:name => "Aaron", :email => "aaron@randomemail.com", :aliases => [ 'bob' ])
|
72
73
|
@another_user = User.create(:name => "Another Guy", :email => "anotherguy@randomemail.com")
|
73
74
|
@post = Post.create(:title => "Test", :body => "Post", :modifier => @user, :views => 100)
|
74
75
|
@comment = @post.comments.create(:title => "test", :body => "comment", :modifier => @user)
|
@@ -189,10 +190,35 @@ describe Mongoid::History do
|
|
189
190
|
end
|
190
191
|
|
191
192
|
it "should exclude defined options" do
|
193
|
+
name = @user.name
|
194
|
+
@user.update_attributes(:name => "Aaron2", :email => "aaronsnewemail@randomemail.com")
|
195
|
+
@user.history_tracks.first.original.keys.should == [ "name", "updated_at" ]
|
196
|
+
@user.history_tracks.first.original["name"].should == name
|
197
|
+
@user.history_tracks.first.modified.keys.should == [ "name", "updated_at" ]
|
198
|
+
@user.history_tracks.first.modified["name"].should == @user.name
|
199
|
+
end
|
200
|
+
|
201
|
+
it "should undo field changes" do
|
202
|
+
name = @user.name
|
192
203
|
@user.update_attributes(:name => "Aaron2", :email => "aaronsnewemail@randomemail.com")
|
193
|
-
@user.history_tracks.first.
|
194
|
-
@user.
|
204
|
+
@user.history_tracks.first.undo! nil
|
205
|
+
@user.reload.name.should == name
|
206
|
+
end
|
207
|
+
|
208
|
+
it "should track array changes" do
|
209
|
+
aliases = @user.aliases
|
210
|
+
@user.update_attributes(:aliases => [ 'bob', 'joe' ])
|
211
|
+
@user.history_tracks.first.original["aliases"].should == aliases
|
212
|
+
@user.history_tracks.first.modified["aliases"].should == @user.aliases
|
195
213
|
end
|
214
|
+
|
215
|
+
it "should undo array changes" do
|
216
|
+
aliases = @user.aliases
|
217
|
+
@user.update_attributes(:aliases => [ 'bob', 'joe' ])
|
218
|
+
@user.history_tracks.first.undo! nil
|
219
|
+
@user.reload.aliases.should == aliases
|
220
|
+
end
|
221
|
+
|
196
222
|
end
|
197
223
|
|
198
224
|
describe "on update non-embedded twice" do
|
@@ -367,7 +393,7 @@ describe Mongoid::History do
|
|
367
393
|
@tag_foo = @post.tags.create(:title => "foo", :updated_by => @user)
|
368
394
|
@tag_bar = @post.tags.create(:title => "bar")
|
369
395
|
end
|
370
|
-
|
396
|
+
|
371
397
|
after(:each) do
|
372
398
|
Thread.current[:mongoid_history_sweeper_controller] = nil
|
373
399
|
end
|
@@ -400,7 +426,7 @@ describe Mongoid::History do
|
|
400
426
|
@tag_foo.history_tracks.last.association_chain.last["name"].should == "tags"
|
401
427
|
lambda{ @tag_foo.history_tracks.last.trackable }.should_not raise_error
|
402
428
|
end
|
403
|
-
|
429
|
+
|
404
430
|
it "should save modifier" do
|
405
431
|
@tag_foo.history_tracks.last.modifier.should eq @user
|
406
432
|
@tag_bar.history_tracks.last.modifier.should eq @user
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongoid-history
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-
|
13
|
+
date: 2012-11-16 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: easy_diff
|
@@ -100,7 +100,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
100
100
|
version: '0'
|
101
101
|
segments:
|
102
102
|
- 0
|
103
|
-
hash:
|
103
|
+
hash: -3144305441896243530
|
104
104
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|