audit_log 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/lib/audit_log.rb CHANGED
@@ -1,5 +1,4 @@
1
1
  require "audit_log/version"
2
- require "audit_log/current_thread"
3
2
  require "audit_log/controller"
4
3
  require "audit_log/mapping"
5
4
  require "audit_log/observer"
@@ -2,13 +2,7 @@ module AuditLog
2
2
 
3
3
  module Controller
4
4
 
5
- def self.included(controller)
6
- controller.before_filter :user_for_audit_log
7
- end
8
-
9
- def user_for_audit_log
10
- AuditLog::CurrentThread.who = current_user_for_audit_log
11
- end
5
+ attr_accessor :audited_model
12
6
 
13
7
  def current_user_for_audit_log
14
8
  current_user
@@ -1,17 +1,20 @@
1
1
  class AuditedModelsObserver < ActiveRecord::Observer
2
2
 
3
+ attr_accessor :controller
4
+
3
5
  def self.observed_classes
4
6
  AuditLog::Mapping.instance.audit_mappings.keys.collect{|model_as_symbol| model_as_symbol.to_s.camelize.constantize}
5
7
  end
6
8
 
9
+
7
10
  def before_validation(model)
8
- Thread.current[:auditing] ||= model
11
+ self.controller.audited_model ||= model
9
12
  end
10
13
 
11
14
  def after_create(model)
12
- if Thread.current[:auditing] == model
15
+ if self.controller.audited_model == model
13
16
  logged_model = LoggedModel.new(
14
- who: AuditLog::CurrentThread.who,
17
+ who: self.controller.current_user_for_audit_log,
15
18
  what: {id: model.id, event: :create},
16
19
  model_name: model.class.name,
17
20
  model_id: model.id
@@ -22,11 +25,11 @@ class AuditedModelsObserver < ActiveRecord::Observer
22
25
 
23
26
 
24
27
  def before_destroy(model)
25
- Thread.current[:auditing] ||= model
28
+ self.controller.audited_model ||= model
26
29
 
27
- if Thread.current[:auditing] == model
30
+ if self.controller.audited_model == model
28
31
  logged_model = LoggedModel.new(
29
- who: AuditLog::CurrentThread.who,
32
+ who: self.controller.current_user_for_audit_log,
30
33
  what: {id: model.id, event: :destroy},
31
34
  model_name: model.class.name,
32
35
  model_id: model.id
@@ -36,14 +39,14 @@ class AuditedModelsObserver < ActiveRecord::Observer
36
39
  end
37
40
 
38
41
  def after_update(model)
39
- if Thread.current[:auditing] == model
42
+ if self.controller.audited_model == model
40
43
  changes = Thread.current[:audited_model_changes]
41
44
 
42
45
  if changes
43
46
  what = WhatBuilder.new(changes).build
44
47
 
45
48
  logged_model = LoggedModel.new(
46
- who: AuditLog::CurrentThread.who,
49
+ who: self.controller.current_user_for_audit_log,
47
50
  what: what,
48
51
  model_name: model.class.name,
49
52
  model_id: model.id
@@ -54,7 +57,7 @@ class AuditedModelsObserver < ActiveRecord::Observer
54
57
  end
55
58
 
56
59
  def before_update(model)
57
- if Thread.current[:auditing] == model
60
+ if self.controller.audited_model == model
58
61
  if (model.changed? && !(model.changed_attributes.keys.collect{|attr| attr.to_sym}.uniq.sort - ignored_fields(model).uniq.sort).empty?) ||
59
62
  has_some_association_changed?(model)
60
63
  changes = {model: model, fields_updates: {}, has_many: {}, has_one: {}}
@@ -199,3 +202,26 @@ class AuditedModelsObserver < ActiveRecord::Observer
199
202
  end
200
203
 
201
204
  end
205
+
206
+ require 'singleton'
207
+
208
+ class ControllerInterceptor
209
+ include Singleton
210
+
211
+ def before(controller)
212
+ AuditedModelsObserver.instance.controller = controller
213
+ true
214
+ end
215
+
216
+ def after(controller)
217
+ AuditedModelsObserver.instance.controller = nil
218
+ end
219
+ end
220
+
221
+
222
+
223
+ if defined?(ActionController) and defined?(ActionController::Base)
224
+ ActionController::Base.class_eval do
225
+ around_filter ControllerInterceptor.instance
226
+ end
227
+ end
@@ -1,3 +1,3 @@
1
1
  module AuditLog
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: audit_log
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-07-14 00:00:00.000000000Z
12
+ date: 2012-07-19 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
16
- requirement: &83520670 !ruby/object:Gem::Requirement
16
+ requirement: &82838150 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>'
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '3.2'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *83520670
24
+ version_requirements: *82838150
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: sqlite3
27
- requirement: &83520460 !ruby/object:Gem::Requirement
27
+ requirement: &82837940 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *83520460
35
+ version_requirements: *82837940
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec-rails
38
- requirement: &83520230 !ruby/object:Gem::Requirement
38
+ requirement: &82837710 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *83520230
46
+ version_requirements: *82837710
47
47
  description:
48
48
  email:
49
49
  - ti@connectere.agr.br
@@ -56,7 +56,6 @@ files:
56
56
  - lib/audit_log/observer.rb
57
57
  - lib/audit_log/logged_model.rb
58
58
  - lib/audit_log/mapping.rb
59
- - lib/audit_log/current_thread.rb
60
59
  - lib/generators/audit_log/templates/create_logged_models.rb
61
60
  - lib/generators/audit_log/install_generator.rb
62
61
  - lib/audit_log.rb
@@ -1,23 +0,0 @@
1
- module AuditLog
2
-
3
- class CurrentThread
4
-
5
- class << self
6
- def who=(user)
7
- auditing_data[:who] = user
8
- end
9
-
10
- def who
11
- auditing_data[:who]
12
- end
13
- end
14
-
15
- private
16
-
17
- def self.auditing_data
18
- Thread.current[:auditing_log] ||= {}
19
- end
20
-
21
- end
22
-
23
- end