paper_trail 1.4.1 → 1.4.3
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/README.md +4 -1
- data/VERSION +1 -1
- data/lib/paper_trail.rb +10 -7
- data/paper_trail.gemspec +5 -3
- data/test/paper_trail_controller_test.rb +5 -12
- data/test/thread_safe_test.rb +32 -0
- metadata +4 -2
data/README.md
CHANGED
@@ -18,6 +18,7 @@ PaperTrail lets you track changes to your models' data. It's good for auditing
|
|
18
18
|
* No configuration necessary.
|
19
19
|
* Stores everything in a single database table (generates migration for you).
|
20
20
|
* Thoroughly tested.
|
21
|
+
* Threadsafe.
|
21
22
|
|
22
23
|
|
23
24
|
## Rails Version
|
@@ -206,7 +207,7 @@ And on again like this:
|
|
206
207
|
|
207
208
|
## Testing
|
208
209
|
|
209
|
-
PaperTrail has a thorough suite of tests.
|
210
|
+
PaperTrail has a thorough suite of tests.
|
210
211
|
|
211
212
|
|
212
213
|
## Articles
|
@@ -225,6 +226,8 @@ Many thanks to:
|
|
225
226
|
|
226
227
|
* [Zachery Hostens](http://github.com/zacheryph)
|
227
228
|
* [Jeremy Weiskotten](http://github.com/jeremyw)
|
229
|
+
* [Phan Le](http://github.com/revo)
|
230
|
+
* [jdrucza](http://github.com/jdrucza)
|
228
231
|
|
229
232
|
|
230
233
|
## Inspirations
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.4.
|
1
|
+
1.4.3
|
data/lib/paper_trail.rb
CHANGED
@@ -3,26 +3,29 @@ require 'paper_trail/has_paper_trail'
|
|
3
3
|
require 'paper_trail/version'
|
4
4
|
|
5
5
|
module PaperTrail
|
6
|
-
@@whodunnit = nil
|
7
6
|
|
8
7
|
def self.included(base)
|
9
8
|
base.before_filter :set_whodunnit
|
10
9
|
end
|
11
10
|
|
12
11
|
def self.whodunnit
|
13
|
-
|
12
|
+
Thread.current[:whodunnit]
|
14
13
|
end
|
15
14
|
|
15
|
+
# Sets who is responsible for any changes that occur.
|
16
|
+
# You would normally use this in a migration or on the console,
|
17
|
+
# when working with models directly. In a controller it is set
|
18
|
+
# automatically to the `current_user`.
|
16
19
|
def self.whodunnit=(value)
|
17
|
-
|
20
|
+
Thread.current[:whodunnit] = value
|
18
21
|
end
|
19
22
|
|
20
|
-
|
23
|
+
protected
|
21
24
|
|
25
|
+
# Sets who is responsible for any changes that occur: the controller's
|
26
|
+
# `current_user`.
|
22
27
|
def set_whodunnit
|
23
|
-
|
24
|
-
self.send :current_user rescue nil
|
25
|
-
}
|
28
|
+
Thread.current[:whodunnit] = self.send :current_user rescue nil
|
26
29
|
end
|
27
30
|
end
|
28
31
|
|
data/paper_trail.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{paper_trail}
|
8
|
-
s.version = "1.4.
|
8
|
+
s.version = "1.4.3"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Andy Stewart"]
|
12
|
-
s.date = %q{2010-03-
|
12
|
+
s.date = %q{2010-03-19}
|
13
13
|
s.email = %q{boss@airbladesoftware.com}
|
14
14
|
s.extra_rdoc_files = [
|
15
15
|
"README.md"
|
@@ -36,6 +36,7 @@ Gem::Specification.new do |s|
|
|
36
36
|
"test/schema.rb",
|
37
37
|
"test/schema_change.rb",
|
38
38
|
"test/test_helper.rb",
|
39
|
+
"test/thread_safe_test.rb",
|
39
40
|
"uninstall.rb"
|
40
41
|
]
|
41
42
|
s.homepage = %q{http://github.com/airblade/paper_trail}
|
@@ -49,7 +50,8 @@ Gem::Specification.new do |s|
|
|
49
50
|
"test/paper_trail_schema_test.rb",
|
50
51
|
"test/schema.rb",
|
51
52
|
"test/schema_change.rb",
|
52
|
-
"test/test_helper.rb"
|
53
|
+
"test/test_helper.rb",
|
54
|
+
"test/thread_safe_test.rb"
|
53
55
|
]
|
54
56
|
|
55
57
|
if s.respond_to? :specification_version then
|
@@ -1,5 +1,9 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
|
+
ActionController::Routing::Routes.draw do |map|
|
4
|
+
map.resources :widgets
|
5
|
+
end
|
6
|
+
|
3
7
|
class ApplicationController < ActionController::Base
|
4
8
|
def rescue_action(e)
|
5
9
|
raise e
|
@@ -30,18 +34,8 @@ class WidgetsController < ApplicationController
|
|
30
34
|
end
|
31
35
|
end
|
32
36
|
|
33
|
-
|
34
|
-
class PaperTrailControllerTest < ActionController::TestCase #Test::Unit::TestCase
|
37
|
+
class PaperTrailControllerTest < ActionController::TestCase
|
35
38
|
tests WidgetsController
|
36
|
-
def setup
|
37
|
-
#@controller = WidgetsController.new
|
38
|
-
#@request = ActionController::TestRequest.new
|
39
|
-
#@response = ActionController::TestResponse.new
|
40
|
-
|
41
|
-
ActionController::Routing::Routes.draw do |map|
|
42
|
-
map.resources :widgets
|
43
|
-
end
|
44
|
-
end
|
45
39
|
|
46
40
|
test 'create' do
|
47
41
|
post :create, :widget => { :name => 'Flugel' }
|
@@ -68,4 +62,3 @@ class PaperTrailControllerTest < ActionController::TestCase #Test::Unit::TestCas
|
|
68
62
|
assert_equal 153, widget.versions.last.whodunnit.to_i
|
69
63
|
end
|
70
64
|
end
|
71
|
-
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TestController < ActionController::Base
|
4
|
+
def current_user
|
5
|
+
Thread.current.object_id
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
class ThreadSafeTest < Test::Unit::TestCase
|
10
|
+
should "be thread safe" do
|
11
|
+
blocked = true
|
12
|
+
|
13
|
+
slow_thread = Thread.new do
|
14
|
+
controller = TestController.new
|
15
|
+
controller.send :set_whodunnit
|
16
|
+
begin
|
17
|
+
sleep 0.001
|
18
|
+
end while blocked
|
19
|
+
PaperTrail.whodunnit
|
20
|
+
end
|
21
|
+
|
22
|
+
fast_thread = Thread.new do
|
23
|
+
controller = TestController.new
|
24
|
+
controller.send :set_whodunnit
|
25
|
+
who = PaperTrail.whodunnit
|
26
|
+
blocked = false
|
27
|
+
who
|
28
|
+
end
|
29
|
+
|
30
|
+
assert_not_equal slow_thread.value, fast_thread.value
|
31
|
+
end
|
32
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: paper_trail
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andy Stewart
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-03-
|
12
|
+
date: 2010-03-19 00:00:00 +00:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -43,6 +43,7 @@ files:
|
|
43
43
|
- test/schema.rb
|
44
44
|
- test/schema_change.rb
|
45
45
|
- test/test_helper.rb
|
46
|
+
- test/thread_safe_test.rb
|
46
47
|
- uninstall.rb
|
47
48
|
has_rdoc: true
|
48
49
|
homepage: http://github.com/airblade/paper_trail
|
@@ -79,3 +80,4 @@ test_files:
|
|
79
80
|
- test/schema.rb
|
80
81
|
- test/schema_change.rb
|
81
82
|
- test/test_helper.rb
|
83
|
+
- test/thread_safe_test.rb
|