auditable 0.0.5 → 0.0.6
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 +7 -2
- data/README.md +1 -1
- data/lib/auditable/auditing.rb +12 -11
- data/lib/auditable/version.rb +1 -1
- data/spec/lib/auditable_spec.rb +8 -0
- data/spec/support/models.rb +1 -1
- metadata +19 -19
data/CHANGELOG.md
CHANGED
@@ -1,7 +1,12 @@
|
|
1
|
-
|
1
|
+
## 0.0.6 (2012-03-12)
|
2
|
+
### Fixes
|
3
|
+
* Fix error when calling `audit_tag_with` on a record without audits and without `audit_tag` virtual attribute defined.
|
2
4
|
|
3
|
-
|
5
|
+
### Changes
|
6
|
+
* `.changed_by`, `.audit_tag`, `.audit_action` virtual attributes are now added to the auditable model by default. The extra check `respond_to?` on these guys is just cumbersome to carry along.
|
4
7
|
|
8
|
+
## 0.0.5 (2012-03-12)
|
9
|
+
### Changes
|
5
10
|
Easier to explain with code
|
6
11
|
|
7
12
|
# Given
|
data/README.md
CHANGED
@@ -120,7 +120,7 @@ It guessable from the above that `audits.modifications` will just be a serialize
|
|
120
120
|
|
121
121
|
If you want to store the user who made the changed to the record, just assigned it to the record's `changed_by` attribute, like so:
|
122
122
|
|
123
|
-
# note
|
123
|
+
# note `attr_accessor :changed_by` is defined in your Survey class by the gem
|
124
124
|
>> @survey.update_attributes(:changed_by => current_user, # and other attributes you want to set)
|
125
125
|
# then @surveys.audits.last.user will be set to current_user
|
126
126
|
# also works when you set changed_by and call save later, of course
|
data/lib/auditable/auditing.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
#require 'active_support/concern'
|
2
|
-
|
3
1
|
module Auditable
|
4
2
|
module Auditing
|
5
3
|
extend ActiveSupport::Concern
|
@@ -26,8 +24,8 @@ module Auditable
|
|
26
24
|
# end
|
27
25
|
def audit(*options)
|
28
26
|
has_many :audits, :class_name => "Auditable::Audit", :as => :auditable
|
29
|
-
after_create {|record| record.snap!("create")}
|
30
|
-
after_update {|record| record.snap!("update")}
|
27
|
+
after_create {|record| record.snap!(:action => "create")}
|
28
|
+
after_update {|record| record.snap!(:action => "update")}
|
31
29
|
|
32
30
|
self.audited_attributes = Array.wrap options
|
33
31
|
end
|
@@ -35,6 +33,8 @@ module Auditable
|
|
35
33
|
|
36
34
|
# INSTANCE METHODS
|
37
35
|
|
36
|
+
attr_accessor :changed_by, :audit_action, :audit_tag
|
37
|
+
|
38
38
|
# Get the latest audit record
|
39
39
|
def last_audit
|
40
40
|
audits.last
|
@@ -52,18 +52,19 @@ module Auditable
|
|
52
52
|
end
|
53
53
|
|
54
54
|
# Take a snapshot of and save the current state of the audited record's audited attributes
|
55
|
-
|
55
|
+
#
|
56
|
+
# Accept values for :tag, :action and :user in the argument hash. However, these are overridden by the values set by the auditable record's virtual attributes (#audit_tag, #audit_action, #changed_by) if defined
|
57
|
+
def snap!(options = {})
|
56
58
|
snap = {}.tap do |s|
|
57
59
|
self.class.audited_attributes.each do |attr|
|
58
60
|
s[attr.to_s] = self.send attr
|
59
61
|
end
|
60
62
|
end
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
end
|
63
|
+
options[:modifications] = snap
|
64
|
+
options[:tag] = self.audit_tag || options[:tag]
|
65
|
+
options[:action] = self.audit_action || options[:action]
|
66
|
+
options[:user] = self.changed_by || options[:user]
|
67
|
+
audits.create(options)
|
67
68
|
end
|
68
69
|
|
69
70
|
# Get the latest changes by comparing the latest two audits
|
data/lib/auditable/version.rb
CHANGED
data/spec/lib/auditable_spec.rb
CHANGED
@@ -142,4 +142,12 @@ describe Auditable do
|
|
142
142
|
another_survey.audited_changes.should == {"title" => ["another survey", "another title 1"]}
|
143
143
|
end
|
144
144
|
end
|
145
|
+
|
146
|
+
context "virtual attributes" do
|
147
|
+
it "should be there!" do
|
148
|
+
survey.should respond_to :changed_by
|
149
|
+
survey.should respond_to :audit_tag
|
150
|
+
survey.should respond_to :audit_action
|
151
|
+
end
|
152
|
+
end
|
145
153
|
end
|
data/spec/support/models.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
class Survey < ActiveRecord::Base
|
2
2
|
attr_accessor :current_page
|
3
|
-
attr_accessor :changed_by, :audit_action, :audit_tag
|
4
3
|
|
5
4
|
audit :title, :current_page
|
6
5
|
end
|
7
6
|
|
8
7
|
class User < ActiveRecord::Base
|
8
|
+
audit :name
|
9
9
|
end
|
10
10
|
|
11
11
|
# TODO add Question class to give examples on association stuff
|
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.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-03-13 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
16
|
-
requirement: &
|
16
|
+
requirement: &2157436600 !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: *2157436600
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rspec
|
27
|
-
requirement: &
|
27
|
+
requirement: &2157436100 !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: *2157436100
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: watchr
|
38
|
-
requirement: &
|
38
|
+
requirement: &2157435620 !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: *2157435620
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: sqlite3
|
49
|
-
requirement: &
|
49
|
+
requirement: &2157435000 !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: *2157435000
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: yard
|
60
|
-
requirement: &
|
60
|
+
requirement: &2157434460 !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: *2157434460
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rdiscount
|
71
|
-
requirement: &
|
71
|
+
requirement: &2157434040 !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: *2157434040
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: activesupport
|
82
|
-
requirement: &
|
82
|
+
requirement: &2157433280 !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: *2157433280
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: activerecord
|
93
|
-
requirement: &
|
93
|
+
requirement: &2157432480 !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: *2157432480
|
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:
|
@@ -143,7 +143,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
143
143
|
version: '0'
|
144
144
|
segments:
|
145
145
|
- 0
|
146
|
-
hash:
|
146
|
+
hash: -2723570149025110749
|
147
147
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
148
148
|
none: false
|
149
149
|
requirements:
|
@@ -152,7 +152,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
152
152
|
version: '0'
|
153
153
|
segments:
|
154
154
|
- 0
|
155
|
-
hash:
|
155
|
+
hash: -2723570149025110749
|
156
156
|
requirements: []
|
157
157
|
rubyforge_project:
|
158
158
|
rubygems_version: 1.8.17
|