auditable 0.1.2 → 0.1.3
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.
- data/CHANGELOG.md +6 -1
- data/Gemfile +0 -3
- data/auditable.gemspec +7 -2
- data/lib/auditable/audit.rb +3 -3
- data/lib/auditable/version.rb +1 -1
- data/spec/lib/auditable_spec.rb +25 -6
- metadata +25 -24
data/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
### 0.1.
|
|
1
|
+
### 0.1.3 (2012-05-24)
|
|
2
|
+
#### Fixes
|
|
3
|
+
* Fix a silly bug not loading the audits under the same `auditable_id`
|
|
4
|
+
* Get the latest audit via `id DESC` instead of `created_at DESC`
|
|
5
|
+
|
|
6
|
+
### 0.1.2 (2012-05-24)
|
|
2
7
|
#### Fixes
|
|
3
8
|
* Fix bug creating duplicate audits despite no change in a record's subsequent saves, due to using `.build`. See this comment on 
|
|
4
9
|
* Fix bug not finding the right audit in rare cases when there are many audits with the same `created_at` timestamp
|
data/Gemfile
CHANGED
data/auditable.gemspec
CHANGED
|
@@ -4,7 +4,7 @@ require File.expand_path('../lib/auditable/version', __FILE__)
|
|
|
4
4
|
Gem::Specification.new do |gem|
|
|
5
5
|
gem.authors = ["Harley Trung"]
|
|
6
6
|
gem.email = ["harley@socialsci.com"]
|
|
7
|
-
gem.description = %q{A simple gem that audit models' attributes or methods by taking snapshots and diff them for you. Starting from scratch to work with Rails 3.2.2 onwards}
|
|
7
|
+
gem.description = %q{A simple gem that audit ActiveRecord models' attributes or methods by taking snapshots and diff them for you. Starting from scratch to work with Rails 3.2.2 onwards}
|
|
8
8
|
gem.summary = %q{A simple gem to audit attributes and methods in ActiveRecord models.}
|
|
9
9
|
gem.homepage = "https://github.com/harleyttd/auditable"
|
|
10
10
|
|
|
@@ -19,10 +19,15 @@ Gem::Specification.new do |gem|
|
|
|
19
19
|
gem.add_development_dependency 'rspec', '>= 2'
|
|
20
20
|
gem.add_development_dependency 'watchr'
|
|
21
21
|
gem.add_development_dependency 'sqlite3'
|
|
22
|
+
gem.add_development_dependency 'timecop'
|
|
22
23
|
# documetation stuff
|
|
23
24
|
gem.add_development_dependency 'yard'
|
|
24
25
|
gem.add_development_dependency 'rdiscount'
|
|
25
|
-
|
|
26
|
+
|
|
27
|
+
# debugger. only included if one sets DEBUGGER env variable
|
|
28
|
+
if ENV['DEBUGGER']
|
|
29
|
+
gem.add_development_dependency 'debugger'
|
|
30
|
+
end
|
|
26
31
|
|
|
27
32
|
gem.add_runtime_dependency 'activesupport', '>= 3.0'
|
|
28
33
|
gem.add_runtime_dependency 'activerecord', '>= 3.0'
|
data/lib/auditable/audit.rb
CHANGED
|
@@ -41,7 +41,7 @@ module Auditable
|
|
|
41
41
|
# See #diff for more details
|
|
42
42
|
def latest_diff(options = {})
|
|
43
43
|
if options.present?
|
|
44
|
-
scoped = auditable.audits.order("
|
|
44
|
+
scoped = auditable.audits.order("id DESC")
|
|
45
45
|
if tag = options.delete(:tag)
|
|
46
46
|
scoped = scoped.where(:tag => tag)
|
|
47
47
|
end
|
|
@@ -59,9 +59,9 @@ module Auditable
|
|
|
59
59
|
|
|
60
60
|
# Diff this audit with the latest audit created before the `time` variable passed
|
|
61
61
|
def diff_since(time)
|
|
62
|
-
other_audit =
|
|
62
|
+
other_audit = auditable.audits.where("created_at <= ? AND id != ?", time, id).order("id DESC").limit(1).first
|
|
63
63
|
diff(other_audit)
|
|
64
|
-
|
|
64
|
+
end
|
|
65
65
|
|
|
66
66
|
# Returns user object
|
|
67
67
|
#
|
data/lib/auditable/version.rb
CHANGED
data/spec/lib/auditable_spec.rb
CHANGED
|
@@ -43,16 +43,25 @@ describe Auditable do
|
|
|
43
43
|
|
|
44
44
|
it "should work after first update" do
|
|
45
45
|
survey.update_attributes :title => "new title"
|
|
46
|
-
survey.audited_changes.should == {"title" => [
|
|
46
|
+
survey.audited_changes.should == {"title" => [nil, "new title"]}
|
|
47
47
|
survey.audited_changes(:tag => "something").should == {"title" => [nil, "new title"]}
|
|
48
48
|
survey.audits.count.should == 1
|
|
49
49
|
end
|
|
50
50
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
51
|
+
describe ".audit_tag_with" do
|
|
52
|
+
it "should create a new audit when calling audit_tag_with without existing audits" do
|
|
53
|
+
expect do
|
|
54
|
+
survey.audit_tag_with("something") # no audit to tag but should be ok with it
|
|
55
|
+
end.to change { survey.audits.count }.from(0).to(1)
|
|
56
|
+
survey.audits.last.tag.should == "something"
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
it "should not create new audits when only tag changes" do
|
|
60
|
+
survey.audit_tag_with "one"
|
|
61
|
+
survey.audit_tag_with "two"
|
|
62
|
+
survey.audit_tag_with "three"
|
|
63
|
+
survey.audits.map(&:tag).should == ["three"]
|
|
64
|
+
end
|
|
56
65
|
end
|
|
57
66
|
end
|
|
58
67
|
|
|
@@ -170,6 +179,16 @@ describe Auditable do
|
|
|
170
179
|
survey.save
|
|
171
180
|
expect { 3.times { survey.save } }.to_not change { survey.audits.count }
|
|
172
181
|
end
|
|
182
|
+
|
|
183
|
+
# TODO this behaviour is up for further debates: https://github.com/harleyttd/auditable/issues/7
|
|
184
|
+
it "should still store when only tag changes" do
|
|
185
|
+
survey.audits.delete_all
|
|
186
|
+
survey.update_attributes!(:audit_tag => 'one')
|
|
187
|
+
survey.update_attributes!(:audit_tag => 'two')
|
|
188
|
+
survey.update_attributes!(:audit_tag => 'three')
|
|
189
|
+
survey.update_attributes!(:audit_tag => 'four')
|
|
190
|
+
survey.audits.map(&:tag).should == %w[one two three four]
|
|
191
|
+
end
|
|
173
192
|
end
|
|
174
193
|
|
|
175
194
|
context "last change of a given attribute from past audits" do
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: auditable
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.3
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -13,7 +13,7 @@ date: 2012-05-24 00:00:00.000000000 Z
|
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: rake
|
|
16
|
-
requirement: &
|
|
16
|
+
requirement: &2152531980 !ruby/object:Gem::Requirement
|
|
17
17
|
none: false
|
|
18
18
|
requirements:
|
|
19
19
|
- - ! '>='
|
|
@@ -21,10 +21,10 @@ dependencies:
|
|
|
21
21
|
version: '0'
|
|
22
22
|
type: :development
|
|
23
23
|
prerelease: false
|
|
24
|
-
version_requirements: *
|
|
24
|
+
version_requirements: *2152531980
|
|
25
25
|
- !ruby/object:Gem::Dependency
|
|
26
26
|
name: rspec
|
|
27
|
-
requirement: &
|
|
27
|
+
requirement: &2152531400 !ruby/object:Gem::Requirement
|
|
28
28
|
none: false
|
|
29
29
|
requirements:
|
|
30
30
|
- - ! '>='
|
|
@@ -32,10 +32,10 @@ dependencies:
|
|
|
32
32
|
version: '2'
|
|
33
33
|
type: :development
|
|
34
34
|
prerelease: false
|
|
35
|
-
version_requirements: *
|
|
35
|
+
version_requirements: *2152531400
|
|
36
36
|
- !ruby/object:Gem::Dependency
|
|
37
37
|
name: watchr
|
|
38
|
-
requirement: &
|
|
38
|
+
requirement: &2152530780 !ruby/object:Gem::Requirement
|
|
39
39
|
none: false
|
|
40
40
|
requirements:
|
|
41
41
|
- - ! '>='
|
|
@@ -43,10 +43,10 @@ dependencies:
|
|
|
43
43
|
version: '0'
|
|
44
44
|
type: :development
|
|
45
45
|
prerelease: false
|
|
46
|
-
version_requirements: *
|
|
46
|
+
version_requirements: *2152530780
|
|
47
47
|
- !ruby/object:Gem::Dependency
|
|
48
48
|
name: sqlite3
|
|
49
|
-
requirement: &
|
|
49
|
+
requirement: &2152530080 !ruby/object:Gem::Requirement
|
|
50
50
|
none: false
|
|
51
51
|
requirements:
|
|
52
52
|
- - ! '>='
|
|
@@ -54,10 +54,10 @@ dependencies:
|
|
|
54
54
|
version: '0'
|
|
55
55
|
type: :development
|
|
56
56
|
prerelease: false
|
|
57
|
-
version_requirements: *
|
|
57
|
+
version_requirements: *2152530080
|
|
58
58
|
- !ruby/object:Gem::Dependency
|
|
59
|
-
name:
|
|
60
|
-
requirement: &
|
|
59
|
+
name: timecop
|
|
60
|
+
requirement: &2152529180 !ruby/object:Gem::Requirement
|
|
61
61
|
none: false
|
|
62
62
|
requirements:
|
|
63
63
|
- - ! '>='
|
|
@@ -65,10 +65,10 @@ dependencies:
|
|
|
65
65
|
version: '0'
|
|
66
66
|
type: :development
|
|
67
67
|
prerelease: false
|
|
68
|
-
version_requirements: *
|
|
68
|
+
version_requirements: *2152529180
|
|
69
69
|
- !ruby/object:Gem::Dependency
|
|
70
|
-
name:
|
|
71
|
-
requirement: &
|
|
70
|
+
name: yard
|
|
71
|
+
requirement: &2152528200 !ruby/object:Gem::Requirement
|
|
72
72
|
none: false
|
|
73
73
|
requirements:
|
|
74
74
|
- - ! '>='
|
|
@@ -76,10 +76,10 @@ dependencies:
|
|
|
76
76
|
version: '0'
|
|
77
77
|
type: :development
|
|
78
78
|
prerelease: false
|
|
79
|
-
version_requirements: *
|
|
79
|
+
version_requirements: *2152528200
|
|
80
80
|
- !ruby/object:Gem::Dependency
|
|
81
|
-
name:
|
|
82
|
-
requirement: &
|
|
81
|
+
name: rdiscount
|
|
82
|
+
requirement: &2152527680 !ruby/object:Gem::Requirement
|
|
83
83
|
none: false
|
|
84
84
|
requirements:
|
|
85
85
|
- - ! '>='
|
|
@@ -87,10 +87,10 @@ dependencies:
|
|
|
87
87
|
version: '0'
|
|
88
88
|
type: :development
|
|
89
89
|
prerelease: false
|
|
90
|
-
version_requirements: *
|
|
90
|
+
version_requirements: *2152527680
|
|
91
91
|
- !ruby/object:Gem::Dependency
|
|
92
92
|
name: activesupport
|
|
93
|
-
requirement: &
|
|
93
|
+
requirement: &2152527140 !ruby/object:Gem::Requirement
|
|
94
94
|
none: false
|
|
95
95
|
requirements:
|
|
96
96
|
- - ! '>='
|
|
@@ -98,10 +98,10 @@ dependencies:
|
|
|
98
98
|
version: '3.0'
|
|
99
99
|
type: :runtime
|
|
100
100
|
prerelease: false
|
|
101
|
-
version_requirements: *
|
|
101
|
+
version_requirements: *2152527140
|
|
102
102
|
- !ruby/object:Gem::Dependency
|
|
103
103
|
name: activerecord
|
|
104
|
-
requirement: &
|
|
104
|
+
requirement: &2152526620 !ruby/object:Gem::Requirement
|
|
105
105
|
none: false
|
|
106
106
|
requirements:
|
|
107
107
|
- - ! '>='
|
|
@@ -109,9 +109,10 @@ dependencies:
|
|
|
109
109
|
version: '3.0'
|
|
110
110
|
type: :runtime
|
|
111
111
|
prerelease: false
|
|
112
|
-
version_requirements: *
|
|
113
|
-
description: A simple gem that audit models' attributes or methods by
|
|
114
|
-
and diff them for you. Starting from scratch to work with Rails
|
|
112
|
+
version_requirements: *2152526620
|
|
113
|
+
description: A simple gem that audit ActiveRecord models' attributes or methods by
|
|
114
|
+
taking snapshots and diff them for you. Starting from scratch to work with Rails
|
|
115
|
+
3.2.2 onwards
|
|
115
116
|
email:
|
|
116
117
|
- harley@socialsci.com
|
|
117
118
|
executables: []
|