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 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 release candidate) 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).
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
- Audit.as_user(User.find(1)) do
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
- task :default => :spec
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]
@@ -0,0 +1,5 @@
1
+ module Audited
2
+ module ActiveRecord
3
+ VERSION = "4.0.0"
4
+ end
5
+ end
@@ -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
@@ -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 an after_audit callback. This might be useful if you want
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
 
@@ -0,0 +1,5 @@
1
+ module Audited
2
+ module MongoMapper
3
+ VERSION = "4.0.0"
4
+ end
5
+ end
@@ -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(:ip)
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)
@@ -0,0 +1,3 @@
1
+ module Audited
2
+ VERSION = "4.0.0"
3
+ end
@@ -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.rc1
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-07-30 00:00:00.000000000 Z
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
- - ".gitignore"
137
- - ".travis.yml"
138
- - ".yardopts"
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: 1.3.1
218
+ version: '0'
219
+ segments:
220
+ - 0
221
+ hash: -725083918367119279
194
222
  requirements: []
195
223
  rubyforge_project:
196
- rubygems_version: 2.2.2
224
+ rubygems_version: 1.8.29
197
225
  signing_key:
198
- specification_version: 4
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