cia 0.4.3 → 0.4.4
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/Gemfile.lock +1 -1
- data/Readme.md +11 -0
- data/gemfiles/rails2.gemfile.lock +1 -1
- data/gemfiles/rails3.gemfile.lock +1 -1
- data/lib/cia.rb +6 -2
- data/lib/cia/auditable.rb +4 -4
- data/lib/cia/version.rb +1 -1
- data/spec/cia_spec.rb +9 -0
- data/spec/spec_helper.rb +1 -0
- metadata +24 -36
data/Gemfile.lock
CHANGED
data/Readme.md
CHANGED
@@ -74,9 +74,20 @@ class User < ActiveRecord::Base
|
|
74
74
|
include CIA::Auditable
|
75
75
|
audited_attributes :email, :crypted_password, :callback => :after_commit
|
76
76
|
end
|
77
|
+
|
78
|
+
# passing arbitrary attributes into the .audit method
|
79
|
+
CIA.non_recordable_attributes = [:my_pretty_audit_property]
|
80
|
+
CIA.audit(:actor => current_user, :my_pretty_audit_property => "12345") do
|
81
|
+
...
|
82
|
+
end
|
83
|
+
|
84
|
+
|
77
85
|
```
|
78
86
|
|
79
87
|
|
88
|
+
# TODO
|
89
|
+
- reuse AR3+ previous_changes in a nice way
|
90
|
+
|
80
91
|
Author
|
81
92
|
======
|
82
93
|
[Michael Grosser](http://grosser.it)<br/>
|
data/lib/cia.rb
CHANGED
@@ -8,6 +8,7 @@ module CIA
|
|
8
8
|
|
9
9
|
class << self
|
10
10
|
attr_accessor :exception_handler
|
11
|
+
attr_accessor :non_recordable_attributes
|
11
12
|
end
|
12
13
|
|
13
14
|
def self.audit(options = {})
|
@@ -36,12 +37,15 @@ module CIA
|
|
36
37
|
return if options and options[:if] and not source.send(options[:if])
|
37
38
|
return if options and options[:unless] and source.send(options[:unless])
|
38
39
|
|
39
|
-
changes = (source.
|
40
|
+
changes = (source.cia_previous_changes || source.cia_changes).slice(*source.class.audited_attributes)
|
40
41
|
message = source.audit_message if source.respond_to?(:audit_message)
|
41
42
|
|
42
43
|
return if not message and changes.empty? and action.to_s == "update"
|
43
44
|
|
44
|
-
|
45
|
+
transaction_attributes = current_transaction.dup
|
46
|
+
transaction_attributes.reject! { |k, v| non_recordable_attributes.include?(k) } if non_recordable_attributes
|
47
|
+
|
48
|
+
event = CIA::Event.new(transaction_attributes.merge(
|
45
49
|
:action => action.to_s,
|
46
50
|
:source => source,
|
47
51
|
:message => message
|
data/lib/cia/auditable.rb
CHANGED
@@ -9,11 +9,11 @@ module CIA
|
|
9
9
|
changes
|
10
10
|
end
|
11
11
|
|
12
|
-
def
|
12
|
+
def cia_previous_changes(changes=nil)
|
13
13
|
if changes
|
14
|
-
@
|
14
|
+
@cia_previous_changes = changes
|
15
15
|
else
|
16
|
-
old, @
|
16
|
+
old, @cia_previous_changes = @cia_previous_changes, nil
|
17
17
|
old
|
18
18
|
end
|
19
19
|
end
|
@@ -38,7 +38,7 @@ module CIA
|
|
38
38
|
|
39
39
|
[:create, :update, :destroy].each do |callback|
|
40
40
|
method, args = if options[:callback] == :after_commit
|
41
|
-
send("after_#{callback}"){ |record| record.
|
41
|
+
send("after_#{callback}"){ |record| record.cia_previous_changes(record.cia_changes) }
|
42
42
|
if ActiveRecord::VERSION::MAJOR == 2
|
43
43
|
["after_commit_on_#{callback}", []]
|
44
44
|
else # rails 3+
|
data/lib/cia/version.rb
CHANGED
data/spec/cia_spec.rb
CHANGED
@@ -103,6 +103,15 @@ describe CIA do
|
|
103
103
|
}.to_not change{ object.class.count }
|
104
104
|
end
|
105
105
|
|
106
|
+
it "is ok with non-attribute methods passed into .audit if they are set as non-recordable" do
|
107
|
+
CIA.non_recordable_attributes = [:foo]
|
108
|
+
expect {
|
109
|
+
CIA.audit(:actor => User.create!, :foo => 'bar') {
|
110
|
+
object.save!
|
111
|
+
}
|
112
|
+
}.to change{ CIA::Event.count }.by(+1)
|
113
|
+
end
|
114
|
+
|
106
115
|
context "nested classes with multiple audited_attributes" do
|
107
116
|
let(:object){ NestedCar.new }
|
108
117
|
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,32 +1,22 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: cia
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.4.4
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 4
|
9
|
-
- 3
|
10
|
-
version: 0.4.3
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Michael Grosser
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
date: 2013-01-10 00:00:00 Z
|
12
|
+
date: 2013-02-22 00:00:00.000000000 Z
|
19
13
|
dependencies: []
|
20
|
-
|
21
14
|
description:
|
22
15
|
email: michael@grosser.it
|
23
16
|
executables: []
|
24
|
-
|
25
17
|
extensions: []
|
26
|
-
|
27
18
|
extra_rdoc_files: []
|
28
|
-
|
29
|
-
files:
|
19
|
+
files:
|
30
20
|
- .travis.yml
|
31
21
|
- Appraisals
|
32
22
|
- Gemfile
|
@@ -49,37 +39,35 @@ files:
|
|
49
39
|
- spec/cia_spec.rb
|
50
40
|
- spec/spec_helper.rb
|
51
41
|
homepage: http://github.com/grosser/cia
|
52
|
-
licenses:
|
42
|
+
licenses:
|
53
43
|
- MIT
|
54
44
|
post_install_message:
|
55
45
|
rdoc_options: []
|
56
|
-
|
57
|
-
require_paths:
|
46
|
+
require_paths:
|
58
47
|
- lib
|
59
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
48
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
60
49
|
none: false
|
61
|
-
requirements:
|
62
|
-
- -
|
63
|
-
- !ruby/object:Gem::Version
|
64
|
-
|
65
|
-
segments:
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
segments:
|
66
55
|
- 0
|
67
|
-
|
68
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
56
|
+
hash: 4468237118319359723
|
57
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
69
58
|
none: false
|
70
|
-
requirements:
|
71
|
-
- -
|
72
|
-
- !ruby/object:Gem::Version
|
73
|
-
|
74
|
-
segments:
|
59
|
+
requirements:
|
60
|
+
- - ! '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
segments:
|
75
64
|
- 0
|
76
|
-
|
65
|
+
hash: 4468237118319359723
|
77
66
|
requirements: []
|
78
|
-
|
79
67
|
rubyforge_project:
|
80
68
|
rubygems_version: 1.8.24
|
81
69
|
signing_key:
|
82
70
|
specification_version: 3
|
83
|
-
summary: Audit model events like update/create/delete + attribute changes + group
|
71
|
+
summary: Audit model events like update/create/delete + attribute changes + group
|
72
|
+
them by transaction, in normalized table layout for easy query access.
|
84
73
|
test_files: []
|
85
|
-
|