auditable 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/.travis.yml +8 -0
- data/README.md +2 -0
- data/lib/auditable/auditing.rb +2 -2
- data/lib/auditable/version.rb +1 -1
- data/spec/lib/auditable_spec.rb +20 -0
- metadata +20 -19
data/.travis.yml
ADDED
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# Auditable
|
2
2
|
|
3
|
+
[![Build Status](https://secure.travis-ci.org/harleyttd/auditable.png?branch=master)](http://travis-ci.org/harleyttd/auditable)
|
4
|
+
|
3
5
|
There are a lot of gems under https://www.ruby-toolbox.com/categories/Active_Record_Versioning and https://www.ruby-toolbox.com/categories/Active_Record_User_Stamping but there are various issues with them (as of this writing):
|
4
6
|
|
5
7
|
* Almost all of them are outdated and not working with Rails 3.2.2. Some of the popular ones such as `papertrail` and `vestal_versions` have many issues and pull requests but haven't been addressed or merged. Based on the large number of forks of these popular gems, people seem to be OK with their own gem tweaks. Some tweaks are good, but some are too hackish (to deal with recent Rails changes) based on the commits that I have read. I have tried some of the more popular ones but they don't work reliably for something simple I'm trying to achieve.
|
data/lib/auditable/auditing.rb
CHANGED
@@ -42,7 +42,7 @@ module Auditable
|
|
42
42
|
|
43
43
|
# Mark the latest record in order to easily find and perform diff against later
|
44
44
|
def audit_tag_with(tag)
|
45
|
-
last_audit.update_attribute(:tag, tag)
|
45
|
+
last_audit.update_attribute(:tag, tag) if last_audit
|
46
46
|
end
|
47
47
|
|
48
48
|
# Take a snapshot of and save the current state of the audited record's audited attributes
|
@@ -62,7 +62,7 @@ module Auditable
|
|
62
62
|
|
63
63
|
# Get the latest changes by comparing the latest two audits
|
64
64
|
def audited_changes(options = {})
|
65
|
-
audits.last.latest_diff
|
65
|
+
audits.last.try(:latest_diff, options) || {}
|
66
66
|
end
|
67
67
|
|
68
68
|
#def self.included(base)
|
data/lib/auditable/version.rb
CHANGED
data/spec/lib/auditable_spec.rb
CHANGED
@@ -17,6 +17,26 @@ describe Auditable do
|
|
17
17
|
survey.audits.last.action.should == "create"
|
18
18
|
end
|
19
19
|
|
20
|
+
context "for existing records without existing audits" do
|
21
|
+
before do
|
22
|
+
survey.audits.delete_all
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should not not fail with errors" do
|
26
|
+
survey.audit_tag_with("something") # no audit to tag but should be ok with it
|
27
|
+
survey.audits.count.should == 0
|
28
|
+
survey.audited_changes.should == {}
|
29
|
+
survey.audited_changes(:tag => "something").should == {}
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should work after first update " do
|
33
|
+
survey.update_attributes :title => "new title"
|
34
|
+
survey.audited_changes.should == {"title" => ["test survey", "new title"]}
|
35
|
+
survey.audited_changes(:tag => "something").should == {"title" => [nil, "new title"]}
|
36
|
+
survey.audits.count.should == 1
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
20
40
|
it "should behave similar to ActiveRecord::Dirty#changes" do
|
21
41
|
# first, let's see how ActiveRecord::Dirty#changes behave
|
22
42
|
survey.title = "new title"
|
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.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-03-12 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
16
|
-
requirement: &
|
16
|
+
requirement: &2156151900 !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: *2156151900
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rspec
|
27
|
-
requirement: &
|
27
|
+
requirement: &2156151400 !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: *2156151400
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: watchr
|
38
|
-
requirement: &
|
38
|
+
requirement: &2156150840 !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: *2156150840
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: sqlite3
|
49
|
-
requirement: &
|
49
|
+
requirement: &2156150280 !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: *2156150280
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: yard
|
60
|
-
requirement: &
|
60
|
+
requirement: &2156149760 !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: *2156149760
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rdiscount
|
71
|
-
requirement: &
|
71
|
+
requirement: &2156149340 !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: *2156149340
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: activesupport
|
82
|
-
requirement: &
|
82
|
+
requirement: &2156148740 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: '3.0'
|
88
88
|
type: :runtime
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *2156148740
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: activerecord
|
93
|
-
requirement: &
|
93
|
+
requirement: &2156147660 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ! '>='
|
@@ -98,7 +98,7 @@ dependencies:
|
|
98
98
|
version: '3.0'
|
99
99
|
type: :runtime
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *2156147660
|
102
102
|
description: A simple gem that audit models' attributes or methods by taking snapshots
|
103
103
|
and diff them for you. Starting from scratch to work with Rails 3.2.2 onwards
|
104
104
|
email:
|
@@ -110,6 +110,7 @@ files:
|
|
110
110
|
- .gitignore
|
111
111
|
- .rspec
|
112
112
|
- .rvmrc
|
113
|
+
- .travis.yml
|
113
114
|
- Gemfile
|
114
115
|
- LICENSE
|
115
116
|
- README.md
|
@@ -140,7 +141,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
140
141
|
version: '0'
|
141
142
|
segments:
|
142
143
|
- 0
|
143
|
-
hash: -
|
144
|
+
hash: -2973896956305891645
|
144
145
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
145
146
|
none: false
|
146
147
|
requirements:
|
@@ -149,7 +150,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
149
150
|
version: '0'
|
150
151
|
segments:
|
151
152
|
- 0
|
152
|
-
hash: -
|
153
|
+
hash: -2973896956305891645
|
153
154
|
requirements: []
|
154
155
|
rubyforge_project:
|
155
156
|
rubygems_version: 1.8.17
|