mongo_mapper_acts_as_versioned 0.3.2 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8d1b118116f01ad10fb94a44217c25d5cb3484c2
4
- data.tar.gz: 6d98d4787e0deb18a00ac773808721ee13f59c1a
3
+ metadata.gz: c112d7390018bff2595ef3b03c4d8bda1b99232d
4
+ data.tar.gz: cce2fb0907beb7d3d30dae48bdcdba47a877d653
5
5
  SHA512:
6
- metadata.gz: 1915620ad8a19ba9f0aa106bcb4ce8cd01353625bb42f01f202770ba2c8ec8838549aea5d8be0677e405e4c0c54beeeae7ce431bc3cbc4ed96bbbcac846b3984
7
- data.tar.gz: 255512d843e5dab2157f25d4509ca4dd3ed9c827cf0360992a3b6960740f1c89ea3751ec8e78235ec2ac038df928ca158157db74f329afb56062ba69e7edeedc
6
+ metadata.gz: 9305d32fe1697cc8e0bd26bd4cfa3f1cb5e5f44534c8a270ec2f07e65031eb6f95478f294a08c768c12d2c06236f6c4048170bae81023a6a06d6defa2a0299cb
7
+ data.tar.gz: d661de01a41d287253ffa18f6f6d8a5013b6a31b84c8488537f35fffeb03595be423cbc11668e387cf1247b3404a03f59f8cb0973715bc27a2acc844584e50a5
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2010 Gigamo <gigamo@gmail.com>
1
+ Copyright (c) 2010-2017 Kenneth De Winter <kdwinter@protonmail.com>
2
2
  Copyright (c) 2005 Rick Olson
3
3
 
4
4
  Permission is hereby granted, free of charge, to any person obtaining
data/README.md CHANGED
@@ -8,32 +8,34 @@ Stores changed attributes in a single collection using a general Hash key.
8
8
 
9
9
  ### Basic Example
10
10
 
11
- class Page
12
- include MongoMapper::Document
11
+ ```ruby
12
+ class Page
13
+ include MongoMapper::Document
13
14
 
14
- plugin MongoMapper::Acts::Versioned
15
+ plugin MongoMapper::Acts::Versioned
15
16
 
16
- key :title, String
17
- end
17
+ key :title, String
18
+ end
18
19
 
19
- page = Page.create(:title => 'title')
20
- page.version # => 1
21
- page.versions.size # => 1
20
+ page = Page.create(:title => 'title')
21
+ page.version # => 1
22
+ page.versions.size # => 1
22
23
 
23
- page.title = 'new title'
24
- page.save
24
+ page.title = 'new title'
25
+ page.save
25
26
 
26
- page = page.reload
27
- page.version # => 2
28
- page.versions.size # => 2
29
- page.title # => 'new title'
27
+ page = page.reload
28
+ page.version # => 2
29
+ page.versions.size # => 2
30
+ page.title # => 'new title'
30
31
 
31
- page.revert_to!(1)
32
+ page.revert_to!(1)
32
33
 
33
- page = page.reload
34
- page.version # => 1
35
- page.versions.size # => 2
36
- page.title # => 'title'
34
+ page = page.reload
35
+ page.version # => 1
36
+ page.versions.size # => 2
37
+ page.title # => 'title'
38
+ ```
37
39
 
38
40
  ### Keys that do not trigger new versions
39
41
 
@@ -53,11 +55,6 @@ Default ignored keys are:
53
55
 
54
56
  Simply add `do_not_version 'new_skipped_key', 'another_skipped_key'` somewhere in your model.
55
57
 
56
- ## Tested with
57
-
58
- * MongoMapper 0.11.1, 0.13.1, 0.14.0
59
- * Ruby 1.9.2 up to 2.4.0
60
-
61
58
  ## Older MongoMapper versions
62
59
 
63
60
  * For MongoMapper <= 0.8.6, see the master branch of this repository.
@@ -66,10 +63,53 @@ Simply add `do_not_version 'new_skipped_key', 'another_skipped_key'` somewhere i
66
63
 
67
64
  * See the next branch of this repository.
68
65
 
66
+ ### Upgrading from older embedded document versions
67
+
68
+ Since 0.3.0, versions have moved into standalone documents rather than embedded documents,
69
+ mostly for performance reasons.
70
+ In hindsight, it didn't really make much sense to load all of a document's versions in every query
71
+ (unless a query specified `.fields` without `:versions`), on top of the actual document itself.
72
+ Versions are now only loaded when specifically requested. Existing versions in your system
73
+ will however not be automatically updated.
74
+
75
+ Here's an example script that can do it for you.
76
+ Assuming models called Page and Template, you can convert its old versions through a script
77
+ like such:
78
+
79
+ ```ruby
80
+ models = [Page, Template]
81
+
82
+ models.each do |model|
83
+ model.const_set(:Version, Class.new {
84
+ include MongoMapper::EmbeddedDocument
85
+ key :modified
86
+ key :version
87
+ })
88
+
89
+ model.many :versions, class_name: "#{model.name}::Version"
90
+
91
+ model.all.each do |document|
92
+ document.versions.each do |old_version|
93
+ MongoMapper::Acts::Versioned::DocumentVersion.create(
94
+ entity_type: model.name,
95
+ entity_id: document.id,
96
+ modified: old_version.modified,
97
+ version: old_version.version
98
+ ) || warn("Didnt create new version for #{old_version.inspect}")
99
+ end
100
+ end
101
+ end
102
+ ```
103
+
69
104
  ## Bundler note
70
105
 
71
106
  Make sure to specify `:require => 'acts_as_versioned'` in your Gemfile.
72
107
 
108
+ ## Tested with
109
+
110
+ * MongoMapper 0.11.1, 0.13.1, 0.14.0
111
+ * Ruby 1.9.2 up to 2.4.0
112
+
73
113
  ## Copyright
74
114
 
75
115
  See LICENSE.
@@ -2,6 +2,7 @@ require "active_support"
2
2
  require "active_support/concern"
3
3
  if ActiveSupport.version >= Gem::Version.new("5.0.0")
4
4
  begin
5
+ # MongoMapper doesn't work without this since it was extracted from Rails in 5.0+
5
6
  require "activemodel-serializers-xml"
6
7
  rescue LoadError
7
8
  warn "Couldn't load AM serializers. Things might break."
@@ -13,9 +14,15 @@ require "active_model"
13
14
  module MongoMapper
14
15
  module Acts
15
16
  module Versioned
17
+ VERSION = "0.3.3"
18
+
19
+ # This model stores all version information.
16
20
  class DocumentVersion
17
21
  include MongoMapper::Document
18
-
22
+ # Manually set the collection name to
23
+ # "document_versions"
24
+ # instead of the default
25
+ # "mongo_mapper.acts.versioned.document_versions"
19
26
  set_collection_name "document_versions"
20
27
 
21
28
  key :modified, Hash
@@ -27,39 +34,49 @@ module MongoMapper
27
34
  belongs_to :entity, polymorphic: true
28
35
  end
29
36
 
37
+ # Required in order to act as a MM plugin.
30
38
  extend ActiveSupport::Concern
31
39
 
32
- VERSION = "0.3.2"
40
+ # Callbacks that should be silenced when saving without revision.
33
41
  CALLBACKS = [:save_version, :clear_old_versions]
34
42
 
43
+ # Set defaults when plugin is included into model.
35
44
  included do
36
45
  class_attribute :non_versioned_keys, :max_version_limit
37
46
 
38
- self.max_version_limit = 0
39
- self.non_versioned_keys = %w(
47
+ self.max_version_limit = 0
48
+ self.non_versioned_keys = %w(
40
49
  _id _type created_at updated_at
41
50
  creator_id updater_id version
42
51
  )
43
52
 
53
+ # The document's current version.
44
54
  key :version, Integer
55
+
45
56
  before_save :save_version
46
57
  before_save :clear_old_versions
47
58
  end
48
59
 
60
+ # All DocumentVersion documents belonging to this document.
61
+ # Returns +Plucky::Query+.
49
62
  def versions
50
63
  MongoMapper::Acts::Versioned::DocumentVersion.where(
51
64
  entity_type: self.class.name, entity_id: self.id
52
65
  )
53
66
  end
54
67
 
68
+ # Grab a specific DocumentVersion document by +given_version+ number.
55
69
  def document_version(given_version)
56
70
  versions.where(version: given_version).first
57
71
  end
58
72
 
73
+ # Grab the DocumentVersion document corresponding with this document's
74
+ # current +version+.
59
75
  def current_document_version
60
76
  document_version(version)
61
77
  end
62
78
 
79
+ # Save a new version for this document.
63
80
  def save_version
64
81
  if new_record? || save_version?
65
82
  self.version = next_version
@@ -75,43 +92,58 @@ module MongoMapper
75
92
  end
76
93
  end
77
94
 
78
- def clear_old_versions
79
- return if self.class.max_version_limit == 0
80
- excess_bagage = version.to_i - self.class.max_version_limit
81
-
82
- if excess_bagage > 0
83
- versions.select { |v| v.version.to_i <= excess_bagage }.map(&:delete)
84
- end
85
- end
86
-
87
- def revert_to(rev)
88
- if rev.is_a?(MongoMapper::Acts::Versioned::DocumentVersion)
89
- return false if rev.new_record?
95
+ # Change the current document's attributes to those of a given +revision+.
96
+ def revert_to(revision)
97
+ if revision.is_a?(MongoMapper::Acts::Versioned::DocumentVersion)
98
+ return false if revision.new_record?
90
99
  else
91
- return false unless rev = document_version(rev)
100
+ return false unless revision = document_version(revision)
92
101
  end
93
102
 
94
- clone_attributes(rev, self)
95
- self.version = rev.version
103
+ clone_attributes(revision, self)
104
+ self.version = revision.version
96
105
 
97
106
  true
98
107
  end
99
108
 
100
- def revert_to!(rev)
101
- revert_to(rev) and save_without_revision or false
109
+ # Change the current document's attributes to those of a given +revision+,
110
+ # and save the document.
111
+ def revert_to!(revision)
112
+ revert_to(revision) and save_without_revision or false
102
113
  end
103
114
 
115
+ # Save this document without creating a new version.
104
116
  def save_without_revision
105
- save_without_revision!
106
- true
107
- rescue
108
- false
117
+ without_revision { save }
109
118
  end
110
119
 
120
+ # Save this document without creating a new version. Raises on save
121
+ # failure.
111
122
  def save_without_revision!
112
123
  without_revision { save! }
113
124
  end
114
125
 
126
+ # Forwards to +self.class.without_revision+.
127
+ def without_revision(&block)
128
+ self.class.without_revision(&block)
129
+ end
130
+
131
+ protected
132
+
133
+ # Clear old versions based on +self.class.max_version_limit+.
134
+ # If this limit is 0, no versions are removed.
135
+ def clear_old_versions
136
+ return if self.class.max_version_limit == 0
137
+ excess_bagage = version.to_i - self.class.max_version_limit
138
+
139
+ if excess_bagage > 0
140
+ versions.select { |v| v.version.to_i <= excess_bagage }.map(&:delete)
141
+ end
142
+ end
143
+
144
+ # Copy the attributes specified in +self.class.versioned_keys+ from either
145
+ # a +DocumentVersion+ into this document, or from this document into a
146
+ # +DocumentVersion+.
115
147
  def clone_attributes(orig_model, new_model)
116
148
  if orig_model.is_a?(MongoMapper::Acts::Versioned::DocumentVersion)
117
149
  orig_model = orig_model.modified
@@ -124,37 +156,41 @@ module MongoMapper
124
156
  end
125
157
  end
126
158
 
159
+ # Should a new version be saved?
127
160
  def save_version?
128
161
  (self.class.versioned_keys & changed).any?
129
162
  end
130
163
 
131
- def without_revision(&block)
132
- self.class.without_revision(&block)
133
- end
134
-
164
+ # Do nothing.
135
165
  def empty_callback
136
166
  end
137
167
 
138
- protected
139
-
168
+ # Next version number, based on current version.
140
169
  def next_version
141
170
  new_record? || versions.count == 0 ?
142
171
  1 : versions.fields(:version).map(&:version).max.next
143
172
  end
144
173
 
145
174
  module ClassMethods
175
+ # Keys/attributes that should be saved in versions.
176
+ #
177
+ # Returns all available keys minus those found in the
178
+ # +non_versioned_keys+ list.
146
179
  def versioned_keys
147
- keys.keys - non_versioned_keys
180
+ keys.keys - non_versioned_keys.map(&:to_s)
148
181
  end
149
182
 
183
+ # Add given +args+ to the +non_versioned_keys+ list.
150
184
  def do_not_version(*args)
151
185
  self.non_versioned_keys |= args
152
186
  end
153
187
 
188
+ # Set +max_version_limit+ as +amount+.
154
189
  def max_versions(amount)
155
190
  self.max_version_limit = amount
156
191
  end
157
192
 
193
+ # Versioning-related are silenced within given +&block+.
158
194
  def without_revision
159
195
  class_eval do
160
196
  CALLBACKS.each do |attr_name|
@@ -7,7 +7,7 @@ describe MongoMapper::Acts::Versioned do
7
7
  include MongoMapper::Document
8
8
 
9
9
  plugin MongoMapper::Acts::Versioned
10
- do_not_version 'depth'
10
+ do_not_version :depth
11
11
 
12
12
  key :title, String
13
13
  key :depth, Integer
@@ -21,10 +21,10 @@ describe MongoMapper::Acts::Versioned do
21
21
 
22
22
  it 'should save a versioned copy' do
23
23
  l = Landmark.create(:title => 'title')
24
- l.new_record?.should be_falsy
25
- l.versions.size.should == 1
26
- l.version.should == 1
27
- l.versions.first.should be_a(MongoMapper::Acts::Versioned::DocumentVersion)
24
+ expect(l.new_record?).to be_falsy
25
+ expect(l.versions.size).to eq 1
26
+ expect(l.version).to eq 1
27
+ expect(l.versions.first).to be_a(MongoMapper::Acts::Versioned::DocumentVersion)
28
28
  end
29
29
 
30
30
  it 'should clear old versions when a limit is set' do
@@ -37,20 +37,20 @@ describe MongoMapper::Acts::Versioned do
37
37
  end
38
38
 
39
39
  l = l.reload
40
- l.versions.size.should == 3
41
- l.versions.first.version.should == 8
42
- l.versions.last.version.should == 10
40
+ expect(l.versions.size).to eq 3
41
+ expect(l.versions.first.version).to eq 8
42
+ expect(l.versions.last.version).to eq 10
43
43
 
44
44
  Landmark.max_version_limit = 0
45
45
  end
46
46
 
47
47
  it 'should save without revision' do
48
48
  l = Landmark.create(:title => 'title')
49
- l.version.should == 1
49
+ expect(l.version).to eq 1
50
50
 
51
51
  l.update_attributes(:title => 'changed')
52
52
  l = l.reload
53
- l.version.should == 2
53
+ expect(l.version).to eq 2
54
54
 
55
55
  old_versions = l.versions.size
56
56
 
@@ -60,7 +60,7 @@ describe MongoMapper::Acts::Versioned do
60
60
  l.update_attributes :title => 'changed again'
61
61
  end
62
62
 
63
- l.reload.versions.size.should == old_versions
63
+ expect(l.reload.versions.size).to eq old_versions
64
64
  end
65
65
 
66
66
  it 'should rollback with version number' do
@@ -71,15 +71,15 @@ describe MongoMapper::Acts::Versioned do
71
71
  end
72
72
 
73
73
  l = l.reload
74
- l.version.should == 10
75
- l.versions.size.should == 10
76
- l.title.should == 'title10'
74
+ expect(l.version).to eq 10
75
+ expect(l.versions.size).to eq 10
76
+ expect(l.title).to eq 'title10'
77
77
 
78
- l.revert_to!(7).should be_truthy
78
+ expect(l.revert_to!(7)).to be_truthy
79
79
  l = l.reload
80
- l.version.should == 7
81
- l.versions.size.should == 10
82
- l.title.should == 'title7'
80
+ expect(l.version).to eq 7
81
+ expect(l.versions.size).to eq 10
82
+ expect(l.title).to eq 'title7'
83
83
  end
84
84
 
85
85
  it 'should rollback with version class' do
@@ -90,15 +90,15 @@ describe MongoMapper::Acts::Versioned do
90
90
  end
91
91
 
92
92
  l = l.reload
93
- l.version.should == 10
94
- l.versions.size.should == 10
95
- l.title.should == 'title10'
93
+ expect(l.version).to eq 10
94
+ expect(l.versions.size).to eq 10
95
+ expect(l.title).to eq 'title10'
96
96
 
97
- l.revert_to!(l.document_version(7)).should be_truthy
97
+ expect(l.revert_to!(l.document_version(7))).to be_truthy
98
98
  l = l.reload
99
- l.version.should == 7
100
- l.versions.size.should == 10
101
- l.title.should == 'title7'
99
+ expect(l.version).to eq 7
100
+ expect(l.versions.size).to eq 10
101
+ expect(l.title).to eq 'title7'
102
102
  end
103
103
 
104
104
  it 'should have versioned records belong to its parent' do
@@ -109,68 +109,68 @@ describe MongoMapper::Acts::Versioned do
109
109
  end
110
110
 
111
111
  l_version = l.reload.versions.last
112
- l_version.entity.should == l.reload
112
+ expect(l_version.entity).to eq l.reload
113
113
  end
114
114
 
115
115
  it 'should not create new versions for skipped keys' do
116
116
  l = Landmark.create(:title => 'title')
117
117
  l.update_attributes(:depth => 1)
118
118
  l = l.reload
119
- l.version.should == 1
120
- l.versions.size.should == 1
119
+ expect(l.version).to eq 1
120
+ expect(l.versions.size).to eq 1
121
121
  end
122
122
 
123
123
  it 'should create a new version even if a skipped key is added' do
124
124
  l = Landmark.create(:title => 'title')
125
125
  l.update_attributes(:title => 'new title', :depth => 1)
126
126
  l = l.reload
127
- l.version.should == 2
128
- l.versions.size.should == 2
127
+ expect(l.version).to eq 2
128
+ expect(l.versions.size).to eq 2
129
129
  end
130
130
 
131
131
  it 'should remember skipped keys through versions' do
132
132
  l = Landmark.create(:title => 'title')
133
133
  l.update_attributes(:title => 'new title')
134
134
  l = l.reload
135
- l.version.should == 2
136
- l.versions.size.should == 2
135
+ expect(l.version).to eq 2
136
+ expect(l.versions.size).to eq 2
137
137
 
138
138
  l.update_attributes(:depth => 1)
139
139
  l = l.reload
140
- l.version.should == 2
141
- l.versions.size.should == 2
142
- l.depth.should == 1
143
- l.title.should == 'new title'
140
+ expect(l.version).to eq 2
141
+ expect(l.versions.size).to eq 2
142
+ expect(l.depth).to eq 1
143
+ expect(l.title).to eq 'new title'
144
144
 
145
145
  l.revert_to!(1)
146
146
  l = l.reload
147
- l.version.should == 1
148
- l.versions.size.should == 2
149
- l.depth.should == 1
150
- l.title.should == 'title'
147
+ expect(l.version).to eq 1
148
+ expect(l.versions.size).to eq 2
149
+ expect(l.depth).to eq 1
150
+ expect(l.title).to eq 'title'
151
151
  end
152
152
 
153
153
  it 'should store changes in a hash' do
154
154
  l = Landmark.create(:title => 'title')
155
- l.document_version(1).modified.should == {'title' => 'title'}
155
+ expect(l.document_version(1).modified).to eq({'title' => 'title'})
156
156
 
157
157
  l.update_attributes(:title => 'changed title', :depth => 1)
158
- l.reload.document_version(2).modified.should == {'title' => 'changed title'}
158
+ expect(l.reload.document_version(2).modified).to eq({'title' => 'changed title'})
159
159
  end
160
160
 
161
161
  it 'should save when a version was created' do
162
162
  l = Landmark.create(:title => 'title')
163
- l.document_version(1).created_at.should be_instance_of(Time)
163
+ expect(l.document_version(1).created_at).to be_instance_of(Time)
164
164
  end
165
165
 
166
166
  it 'should save a versioned class with sci' do
167
167
  s = Sublandmark.create!(:title => 'first title')
168
- s.new_record?.should be_falsy
169
- s.version.should == 1
168
+ expect(s.new_record?).to be_falsy
169
+ expect(s.version).to eq 1
170
170
 
171
- s.versions.size.should == 1
172
- s.versions.first.should be_a(MongoMapper::Acts::Versioned::DocumentVersion)
173
- s.versions.first.entity_type.should == "Sublandmark"
171
+ expect(s.versions.size).to eq 1
172
+ expect(s.versions.first).to be_a(MongoMapper::Acts::Versioned::DocumentVersion)
173
+ expect(s.versions.first.entity_type).to eq "Sublandmark"
174
174
  end
175
175
 
176
176
  it 'should rollback with sci' do
@@ -181,14 +181,14 @@ describe MongoMapper::Acts::Versioned do
181
181
  end
182
182
 
183
183
  l = l.reload
184
- l.version.should == 5
185
- l.versions.size.should == 5
186
- l.title.should == 'other title5'
187
- l.revert_to!(3).should be_truthy
184
+ expect(l.version).to eq 5
185
+ expect(l.versions.size).to eq 5
186
+ expect(l.title).to eq 'other title5'
187
+ expect(l.revert_to!(3)).to be_truthy
188
188
  l = l.reload
189
- l.version.should == 3
190
- l.versions.size.should == 5
191
- l.title.should == 'other title3'
189
+ expect(l.version).to eq 3
190
+ expect(l.versions.size).to eq 5
191
+ expect(l.title).to eq 'other title3'
192
192
 
193
193
  s = Sublandmark.create(:title => 'title')
194
194
  (2..5).each do |i|
@@ -197,15 +197,15 @@ describe MongoMapper::Acts::Versioned do
197
197
  end
198
198
 
199
199
  s = s.reload
200
- s.versions.should_not == l.versions
201
- s.version.should == 5
202
- s.versions.size.should == 5
203
- s.title.should == 'title5'
204
- s.revert_to!(3).should be_truthy
200
+ expect(s.versions).not_to eq l.versions
201
+ expect(s.version).to eq 5
202
+ expect(s.versions.size).to eq 5
203
+ expect(s.title).to eq 'title5'
204
+ expect(s.revert_to!(3)).to be_truthy
205
205
  s = s.reload
206
- s.version.should == 3
207
- s.versions.size.should == 5
208
- s.title.should == 'title3'
206
+ expect(s.version).to eq 3
207
+ expect(s.versions.size).to eq 5
208
+ expect(s.title).to eq 'title3'
209
209
  end
210
210
  end
211
211
 
@@ -229,10 +229,10 @@ describe MongoMapper::Acts::Versioned do
229
229
  it 'should version only the subclass' do
230
230
  page = Page.create(:title => 'page title')
231
231
  post = Post.create(:title => 'post title')
232
- page.version.should == 1
233
- page.versions.size.should == 1
234
- post.version.should == 1
235
- post.versions.size.should == 1
232
+ expect(page.version).to eq 1
233
+ expect(page.versions.size).to eq 1
234
+ expect(post.version).to eq 1
235
+ expect(post.versions.size).to eq 1
236
236
  end
237
237
  end
238
238
  end
data/spec/spec_helper.rb CHANGED
@@ -1,18 +1,19 @@
1
1
  require 'mongo_mapper'
2
- require 'mongo_mapper/version'
3
- puts MongoMapper::Version
4
2
  require 'rspec'
5
3
  require File.expand_path('../../lib/acts_as_versioned', __FILE__)
6
4
 
7
5
  MongoMapper.connection = Mongo::Connection.new('127.0.0.1', 27017)
8
6
  MongoMapper.database = 'test'
9
- MongoMapper.database.collections.each {|c| c.drop_indexes }
7
+ MongoMapper.database.collections.each(&:drop_indexes)
10
8
 
11
- RSpec.configure do |config|
12
- config.after :each do
13
- MongoMapper.database.collections.each do |collection|
14
- collection.remove unless collection.name =~ /(.*\.)?system\..*/
15
- collection.drop_indexes
16
- end
9
+ def remove_collections
10
+ MongoMapper.database.collections.each do |collection|
11
+ collection.remove unless collection.name =~ /(.*\.)?system\..*/
12
+ collection.drop_indexes
17
13
  end
18
14
  end
15
+ remove_collections
16
+
17
+ RSpec.configure do |config|
18
+ config.after(:each) { remove_collections }
19
+ end
metadata CHANGED
@@ -1,10 +1,10 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongo_mapper_acts_as_versioned
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
- - Gigamo
7
+ - Kenneth De Winter
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []