Skip to content

Commit a158772

Browse files
committed
Merge pull request #541 from stormsilver/thread-safe-disabled
Make Config.enabled backed by a thread variable #539
2 parents 74d8e69 + 71faed3 commit a158772

2 files changed

Lines changed: 17 additions & 2 deletions

File tree

lib/paper_trail/config.rb

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,11 @@
33
module PaperTrail
44
class Config
55
include Singleton
6-
attr_accessor :enabled, :timestamp_field, :serializer, :version_limit
6+
attr_accessor :timestamp_field, :serializer, :version_limit
77
attr_reader :serialized_attributes
88
attr_writer :track_associations
99

1010
def initialize
11-
@enabled = true # Indicates whether PaperTrail is on or off.
1211
@timestamp_field = :created_at
1312
@serializer = PaperTrail::Serializers::YAML
1413

@@ -33,5 +32,14 @@ def track_associations
3332
@track_associations ||= PaperTrail::VersionAssociation.table_exists?
3433
end
3534
alias_method :track_associations?, :track_associations
35+
36+
# Indicates whether PaperTrail is on or off.
37+
def enabled
38+
PaperTrail.paper_trail_store[:paper_trail_enabled].nil? || PaperTrail.paper_trail_store[:paper_trail_enabled]
39+
end
40+
41+
def enabled= enable
42+
PaperTrail.paper_trail_store[:paper_trail_enabled] = enable
43+
end
3644
end
3745
end

test/paper_trail_test.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,13 @@ class PaperTrailTest < ActiveSupport::TestCase
88
test 'Version Number' do
99
assert PaperTrail.const_defined?(:VERSION)
1010
end
11+
12+
test 'enabled is thread-safe' do
13+
Thread.new do
14+
PaperTrail.enabled = false
15+
end.join
16+
assert PaperTrail.enabled?
17+
end
1118

1219
test 'create with plain model class' do
1320
widget = Widget.create

0 commit comments

Comments
 (0)