audited 4.0.0.rc1 → 4.0.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of audited might be problematic. Click here for more details.
- data/README.md +2 -2
- data/Rakefile +8 -1
- data/lib/audited/active_record/version.rb +5 -0
- data/lib/audited/audit.rb +5 -2
- data/lib/audited/auditor.rb +4 -2
- data/lib/audited/mongo_mapper/version.rb +5 -0
- data/lib/audited/sweeper.rb +6 -1
- data/lib/audited/version.rb +3 -0
- data/spec/support/active_record/models.rb +5 -1
- data/spec/support/active_record/schema.rb +2 -0
- data/spec/support/mongo_mapper/models.rb +5 -1
- data/test/db/version_6.rb +17 -0
- data/test/upgrade_generator_test.rb +12 -0
- metadata +55 -27
- checksums.yaml +0 -7
data/README.md
CHANGED
@@ -3,7 +3,7 @@ Audited [![Build Status](https://secure.travis-ci.org/collectiveidea/audited.png
|
|
3
3
|
|
4
4
|
**Audited** (previously acts_as_audited) is an ORM extension that logs all changes to your models. Audited also allows you to record who made those changes, save comments and associate models related to the changes.
|
5
5
|
|
6
|
-
Audited currently (4.x
|
6
|
+
Audited currently (4.x) works with Rails 4. For Rails 3, use gem version 3.0 or see the [3.0-stable branch](https://github.com/collectiveidea/audited/tree/3.0-stable).
|
7
7
|
|
8
8
|
## Supported Rubies
|
9
9
|
|
@@ -162,7 +162,7 @@ Audited.current_user_method = :authenticated_user
|
|
162
162
|
Outside of a request, Audited can still record the user with the `as_user` method:
|
163
163
|
|
164
164
|
```ruby
|
165
|
-
|
165
|
+
Audited.audit_class.as_user(User.find(1)) do
|
166
166
|
post.update_attribute!(:title => "Hello, world!")
|
167
167
|
end
|
168
168
|
post.audits.last.user # => #<User id: 1>
|
data/Rakefile
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'bundler/gem_helper'
|
4
4
|
require 'rspec/core/rake_task'
|
5
|
+
require 'rake/testtask'
|
5
6
|
require 'appraisal'
|
6
7
|
|
7
8
|
Bundler::GemHelper.install_tasks(:name => 'audited')
|
@@ -23,4 +24,10 @@ task :spec do
|
|
23
24
|
end
|
24
25
|
end
|
25
26
|
|
26
|
-
|
27
|
+
Rake::TestTask.new do |t|
|
28
|
+
t.libs << "test"
|
29
|
+
t.test_files = FileList['test/**/*_test.rb']
|
30
|
+
t.verbose = true
|
31
|
+
end
|
32
|
+
|
33
|
+
task :default => [:spec, :test]
|
data/lib/audited/audit.rb
CHANGED
@@ -11,11 +11,10 @@ module Audited
|
|
11
11
|
belongs_to :user, :polymorphic => true
|
12
12
|
belongs_to :associated, :polymorphic => true
|
13
13
|
|
14
|
-
before_create :set_version_number, :set_audit_user
|
14
|
+
before_create :set_version_number, :set_audit_user, :set_request_uuid
|
15
15
|
|
16
16
|
cattr_accessor :audited_class_names
|
17
17
|
self.audited_class_names = Set.new
|
18
|
-
|
19
18
|
end
|
20
19
|
|
21
20
|
# Returns the list of classes that are being audited
|
@@ -97,5 +96,9 @@ module Audited
|
|
97
96
|
self.user = Thread.current[:audited_user] if Thread.current[:audited_user]
|
98
97
|
nil # prevent stopping callback chains
|
99
98
|
end
|
99
|
+
|
100
|
+
def set_request_uuid
|
101
|
+
self.request_uuid ||= SecureRandom.uuid
|
102
|
+
end
|
100
103
|
end
|
101
104
|
end
|
data/lib/audited/auditor.rb
CHANGED
@@ -65,10 +65,12 @@ module Audited
|
|
65
65
|
before_update :audit_update if !options[:on] || (options[:on] && options[:on].include?(:update))
|
66
66
|
before_destroy :audit_destroy if !options[:on] || (options[:on] && options[:on].include?(:destroy))
|
67
67
|
|
68
|
-
# Define and set
|
69
|
-
# to notify a party after the audit has been created
|
68
|
+
# Define and set after_audit and around_audit callbacks. This might be useful if you want
|
69
|
+
# to notify a party after the audit has been created or if you want to access the newly-created
|
70
|
+
# audit.
|
70
71
|
define_callbacks :audit
|
71
72
|
set_callback :audit, :after, :after_audit, :if => lambda { self.respond_to?(:after_audit) }
|
73
|
+
set_callback :audit, :around, :around_audit, :if => lambda { self.respond_to?(:around_audit) }
|
72
74
|
|
73
75
|
attr_accessor :version
|
74
76
|
|
data/lib/audited/sweeper.rb
CHANGED
@@ -17,13 +17,18 @@ module Audited
|
|
17
17
|
|
18
18
|
def before_create(audit)
|
19
19
|
audit.user ||= current_user
|
20
|
-
audit.remote_address = controller.try(:request).try(:
|
20
|
+
audit.remote_address = controller.try(:request).try(:remote_ip)
|
21
|
+
audit.request_uuid = request_uuid if request_uuid
|
21
22
|
end
|
22
23
|
|
23
24
|
def current_user
|
24
25
|
controller.send(Audited.current_user_method) if controller.respond_to?(Audited.current_user_method, true)
|
25
26
|
end
|
26
27
|
|
28
|
+
def request_uuid
|
29
|
+
controller.try(:request).try(:uuid)
|
30
|
+
end
|
31
|
+
|
27
32
|
def add_observer!(klass)
|
28
33
|
super
|
29
34
|
define_callback(klass)
|
@@ -38,11 +38,15 @@ module Models
|
|
38
38
|
class UserWithAfterAudit < ::ActiveRecord::Base
|
39
39
|
self.table_name = :users
|
40
40
|
audited
|
41
|
-
attr_accessor :bogus_attr
|
41
|
+
attr_accessor :bogus_attr, :around_attr
|
42
42
|
|
43
43
|
def after_audit
|
44
44
|
self.bogus_attr = "do something"
|
45
45
|
end
|
46
|
+
|
47
|
+
def around_audit
|
48
|
+
self.around_attr = yield
|
49
|
+
end
|
46
50
|
end
|
47
51
|
|
48
52
|
class Company < ::ActiveRecord::Base
|
@@ -44,11 +44,13 @@ ActiveRecord::Schema.define do
|
|
44
44
|
t.column :version, :integer, :default => 0
|
45
45
|
t.column :comment, :string
|
46
46
|
t.column :remote_address, :string
|
47
|
+
t.column :request_uuid, :string
|
47
48
|
t.column :created_at, :datetime
|
48
49
|
end
|
49
50
|
|
50
51
|
add_index :audits, [:auditable_id, :auditable_type], :name => 'auditable_index'
|
51
52
|
add_index :audits, [:associated_id, :associated_type], :name => 'associated_index'
|
52
53
|
add_index :audits, [:user_id, :user_type], :name => 'user_index'
|
54
|
+
add_index :audits, :request_uuid
|
53
55
|
add_index :audits, :created_at
|
54
56
|
end
|
@@ -94,11 +94,15 @@ module Models
|
|
94
94
|
timestamps!
|
95
95
|
|
96
96
|
audited
|
97
|
-
attr_accessor :bogus_attr
|
97
|
+
attr_accessor :bogus_attr, :around_attr
|
98
98
|
|
99
99
|
def after_audit
|
100
100
|
self.bogus_attr = "do something"
|
101
101
|
end
|
102
|
+
|
103
|
+
def around_audit
|
104
|
+
self.around_attr = yield
|
105
|
+
end
|
102
106
|
end
|
103
107
|
|
104
108
|
class Company
|
@@ -0,0 +1,17 @@
|
|
1
|
+
ActiveRecord::Schema.define do
|
2
|
+
create_table :audits, :force => true do |t|
|
3
|
+
t.column :auditable_id, :integer
|
4
|
+
t.column :auditable_type, :string
|
5
|
+
t.column :user_id, :integer
|
6
|
+
t.column :user_type, :string
|
7
|
+
t.column :username, :string
|
8
|
+
t.column :action, :string
|
9
|
+
t.column :audited_changes, :text
|
10
|
+
t.column :version, :integer, :default => 0
|
11
|
+
t.column :comment, :string
|
12
|
+
t.column :created_at, :datetime
|
13
|
+
t.column :remote_address, :string
|
14
|
+
t.column :associated_id, :integer
|
15
|
+
t.column :associated_type, :string
|
16
|
+
end
|
17
|
+
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
|
+
require 'audited/adapters/active_record'
|
3
4
|
require 'generators/audited/upgrade_generator'
|
4
5
|
|
5
6
|
class UpgradeGeneratorTest < Rails::Generators::TestCase
|
@@ -62,4 +63,15 @@ class UpgradeGeneratorTest < Rails::Generators::TestCase
|
|
62
63
|
assert_match /rename_column :audits, :association_type, :associated_type/, content
|
63
64
|
end
|
64
65
|
end
|
66
|
+
|
67
|
+
test "should add 'request_uuid' to audits table" do
|
68
|
+
load_schema 6
|
69
|
+
|
70
|
+
run_generator %w(upgrade)
|
71
|
+
|
72
|
+
assert_migration "db/migrate/add_request_uuid_to_audits.rb" do |content|
|
73
|
+
assert_match /add_column :audits, :request_uuid, :string/, content
|
74
|
+
assert_match /add_index :audits, :request_uuid/, content
|
75
|
+
end
|
76
|
+
end
|
65
77
|
end
|
metadata
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: audited
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0.0
|
4
|
+
version: 4.0.0
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Brandon Keepers
|
@@ -13,118 +14,134 @@ authors:
|
|
13
14
|
autorequire:
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
|
-
date: 2014-
|
17
|
+
date: 2014-09-04 00:00:00.000000000 Z
|
17
18
|
dependencies:
|
18
19
|
- !ruby/object:Gem::Dependency
|
19
20
|
name: rails-observers
|
20
21
|
requirement: !ruby/object:Gem::Requirement
|
22
|
+
none: false
|
21
23
|
requirements:
|
22
|
-
- -
|
24
|
+
- - ~>
|
23
25
|
- !ruby/object:Gem::Version
|
24
26
|
version: 0.1.2
|
25
27
|
type: :runtime
|
26
28
|
prerelease: false
|
27
29
|
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
none: false
|
28
31
|
requirements:
|
29
|
-
- -
|
32
|
+
- - ~>
|
30
33
|
- !ruby/object:Gem::Version
|
31
34
|
version: 0.1.2
|
32
35
|
- !ruby/object:Gem::Dependency
|
33
36
|
name: protected_attributes
|
34
37
|
requirement: !ruby/object:Gem::Requirement
|
38
|
+
none: false
|
35
39
|
requirements:
|
36
|
-
- -
|
40
|
+
- - ! '>='
|
37
41
|
- !ruby/object:Gem::Version
|
38
42
|
version: '0'
|
39
43
|
type: :development
|
40
44
|
prerelease: false
|
41
45
|
version_requirements: !ruby/object:Gem::Requirement
|
46
|
+
none: false
|
42
47
|
requirements:
|
43
|
-
- -
|
48
|
+
- - ! '>='
|
44
49
|
- !ruby/object:Gem::Version
|
45
50
|
version: '0'
|
46
51
|
- !ruby/object:Gem::Dependency
|
47
52
|
name: appraisal
|
48
53
|
requirement: !ruby/object:Gem::Requirement
|
54
|
+
none: false
|
49
55
|
requirements:
|
50
|
-
- -
|
56
|
+
- - ~>
|
51
57
|
- !ruby/object:Gem::Version
|
52
58
|
version: 1.0.0
|
53
59
|
type: :development
|
54
60
|
prerelease: false
|
55
61
|
version_requirements: !ruby/object:Gem::Requirement
|
62
|
+
none: false
|
56
63
|
requirements:
|
57
|
-
- -
|
64
|
+
- - ~>
|
58
65
|
- !ruby/object:Gem::Version
|
59
66
|
version: 1.0.0
|
60
67
|
- !ruby/object:Gem::Dependency
|
61
68
|
name: bson_ext
|
62
69
|
requirement: !ruby/object:Gem::Requirement
|
70
|
+
none: false
|
63
71
|
requirements:
|
64
|
-
- -
|
72
|
+
- - ~>
|
65
73
|
- !ruby/object:Gem::Version
|
66
74
|
version: '1.6'
|
67
75
|
type: :development
|
68
76
|
prerelease: false
|
69
77
|
version_requirements: !ruby/object:Gem::Requirement
|
78
|
+
none: false
|
70
79
|
requirements:
|
71
|
-
- -
|
80
|
+
- - ~>
|
72
81
|
- !ruby/object:Gem::Version
|
73
82
|
version: '1.6'
|
74
83
|
- !ruby/object:Gem::Dependency
|
75
84
|
name: mongo_mapper
|
76
85
|
requirement: !ruby/object:Gem::Requirement
|
86
|
+
none: false
|
77
87
|
requirements:
|
78
|
-
- -
|
88
|
+
- - ~>
|
79
89
|
- !ruby/object:Gem::Version
|
80
90
|
version: 0.13.0.beta2
|
81
91
|
type: :development
|
82
92
|
prerelease: false
|
83
93
|
version_requirements: !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
84
95
|
requirements:
|
85
|
-
- -
|
96
|
+
- - ~>
|
86
97
|
- !ruby/object:Gem::Version
|
87
98
|
version: 0.13.0.beta2
|
88
99
|
- !ruby/object:Gem::Dependency
|
89
100
|
name: rails
|
90
101
|
requirement: !ruby/object:Gem::Requirement
|
102
|
+
none: false
|
91
103
|
requirements:
|
92
|
-
- -
|
104
|
+
- - ~>
|
93
105
|
- !ruby/object:Gem::Version
|
94
106
|
version: 4.0.0
|
95
107
|
type: :development
|
96
108
|
prerelease: false
|
97
109
|
version_requirements: !ruby/object:Gem::Requirement
|
110
|
+
none: false
|
98
111
|
requirements:
|
99
|
-
- -
|
112
|
+
- - ~>
|
100
113
|
- !ruby/object:Gem::Version
|
101
114
|
version: 4.0.0
|
102
115
|
- !ruby/object:Gem::Dependency
|
103
116
|
name: rspec-rails
|
104
117
|
requirement: !ruby/object:Gem::Requirement
|
118
|
+
none: false
|
105
119
|
requirements:
|
106
|
-
- -
|
120
|
+
- - ~>
|
107
121
|
- !ruby/object:Gem::Version
|
108
122
|
version: '3.0'
|
109
123
|
type: :development
|
110
124
|
prerelease: false
|
111
125
|
version_requirements: !ruby/object:Gem::Requirement
|
126
|
+
none: false
|
112
127
|
requirements:
|
113
|
-
- -
|
128
|
+
- - ~>
|
114
129
|
- !ruby/object:Gem::Version
|
115
130
|
version: '3.0'
|
116
131
|
- !ruby/object:Gem::Dependency
|
117
132
|
name: sqlite3
|
118
133
|
requirement: !ruby/object:Gem::Requirement
|
134
|
+
none: false
|
119
135
|
requirements:
|
120
|
-
- -
|
136
|
+
- - ~>
|
121
137
|
- !ruby/object:Gem::Version
|
122
138
|
version: '1.0'
|
123
139
|
type: :development
|
124
140
|
prerelease: false
|
125
141
|
version_requirements: !ruby/object:Gem::Requirement
|
142
|
+
none: false
|
126
143
|
requirements:
|
127
|
-
- -
|
144
|
+
- - ~>
|
128
145
|
- !ruby/object:Gem::Version
|
129
146
|
version: '1.0'
|
130
147
|
description: Log all changes to your models
|
@@ -133,9 +150,9 @@ executables: []
|
|
133
150
|
extensions: []
|
134
151
|
extra_rdoc_files: []
|
135
152
|
files:
|
136
|
-
-
|
137
|
-
-
|
138
|
-
-
|
153
|
+
- .gitignore
|
154
|
+
- .travis.yml
|
155
|
+
- .yardopts
|
139
156
|
- Appraisals
|
140
157
|
- CHANGELOG
|
141
158
|
- Gemfile
|
@@ -145,10 +162,13 @@ files:
|
|
145
162
|
- gemfiles/rails40.gemfile
|
146
163
|
- gemfiles/rails41.gemfile
|
147
164
|
- lib/audited.rb
|
165
|
+
- lib/audited/active_record/version.rb
|
148
166
|
- lib/audited/audit.rb
|
149
167
|
- lib/audited/auditor.rb
|
168
|
+
- lib/audited/mongo_mapper/version.rb
|
150
169
|
- lib/audited/rspec_matchers.rb
|
151
170
|
- lib/audited/sweeper.rb
|
171
|
+
- lib/audited/version.rb
|
152
172
|
- spec/audited_spec_helpers.rb
|
153
173
|
- spec/rails_app/config/application.rb
|
154
174
|
- spec/rails_app/config/database.yml
|
@@ -170,32 +190,40 @@ files:
|
|
170
190
|
- test/db/version_3.rb
|
171
191
|
- test/db/version_4.rb
|
172
192
|
- test/db/version_5.rb
|
193
|
+
- test/db/version_6.rb
|
173
194
|
- test/install_generator_test.rb
|
174
195
|
- test/test_helper.rb
|
175
196
|
- test/upgrade_generator_test.rb
|
176
197
|
homepage: https://github.com/collectiveidea/audited
|
177
198
|
licenses:
|
178
199
|
- MIT
|
179
|
-
metadata: {}
|
180
200
|
post_install_message:
|
181
201
|
rdoc_options: []
|
182
202
|
require_paths:
|
183
203
|
- lib
|
184
204
|
required_ruby_version: !ruby/object:Gem::Requirement
|
205
|
+
none: false
|
185
206
|
requirements:
|
186
|
-
- -
|
207
|
+
- - ! '>='
|
187
208
|
- !ruby/object:Gem::Version
|
188
209
|
version: '0'
|
210
|
+
segments:
|
211
|
+
- 0
|
212
|
+
hash: -725083918367119279
|
189
213
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
214
|
+
none: false
|
190
215
|
requirements:
|
191
|
-
- -
|
216
|
+
- - ! '>='
|
192
217
|
- !ruby/object:Gem::Version
|
193
|
-
version:
|
218
|
+
version: '0'
|
219
|
+
segments:
|
220
|
+
- 0
|
221
|
+
hash: -725083918367119279
|
194
222
|
requirements: []
|
195
223
|
rubyforge_project:
|
196
|
-
rubygems_version:
|
224
|
+
rubygems_version: 1.8.29
|
197
225
|
signing_key:
|
198
|
-
specification_version:
|
226
|
+
specification_version: 3
|
199
227
|
summary: Log all changes to your models
|
200
228
|
test_files:
|
201
229
|
- spec/audited_spec_helpers.rb
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: 982f38135cfff168133e5d215dfaffaa33ea8a11
|
4
|
-
data.tar.gz: 406ab4c30bfa68a2637ab095b98ebb4ebe6b3df6
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: 6467f9860583086e452163cc4c99e4fcc5052a38877a8fbe909834840e5ad3016044de7b77dd44526536bb6aee4653b9cb359a1bed4affaffe2002945c9bef62
|
7
|
-
data.tar.gz: dfbd48f76b0493e07ba436621212864e0dc62f21e0c5f4c3d635052e285cd14d590266756af44673cc1dd999804e9891106ab555aeffbb6d2667f5a6de046ffc
|