domain_neutral 1.0.2 → 1.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/domain_neutral/symbolized_class.rb +16 -8
- data/lib/domain_neutral/version.rb +1 -1
- data/test/domain_neutral/symbolized_class_test.rb +10 -2
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/log/test.log +2289 -0
- data/test/test_helpers/caching.rb +7 -7
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0f5efbdab266c46f4389694389accd31b416a33b
|
4
|
+
data.tar.gz: 4a96857832d7baf3fbf7cf38559430f69d2c4ad7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 68c7f2f9b5515b1faee5d87cff549f30daf1c43d3f111bc97e987b8b31c07164f9be063ef4ed095f583673dda8c69695b6a75d0c7aa2b8f9827e710243d2e511
|
7
|
+
data.tar.gz: 573e9a8514a100bae77e7281af051fbc2a922b8733cfdbb9c139100bdd9dfbdeee11903036ba6699207f754a7fd137f6caa758ba6f941d3bc2466f66b92a4e6b
|
@@ -57,9 +57,7 @@ module DomainNeutral
|
|
57
57
|
# Overrides find by using cache.
|
58
58
|
# The key in cache is [class_name, id] or ':class_name/:id', e.g. 'Role/1'
|
59
59
|
def find(id)
|
60
|
-
|
61
|
-
Rails.cache.fetch([name, id]) { super }
|
62
|
-
else
|
60
|
+
fetch([name, id]) do
|
63
61
|
super
|
64
62
|
end
|
65
63
|
end
|
@@ -70,11 +68,7 @@ module DomainNeutral
|
|
70
68
|
# Descriptor[:symbol]
|
71
69
|
# Descriptor.symbol
|
72
70
|
def find_by_symbol(symbol)
|
73
|
-
|
74
|
-
Rails.cache.fetch([name, symbol.to_s]) do
|
75
|
-
where(symbol: symbol).first
|
76
|
-
end
|
77
|
-
else
|
71
|
+
fetch([name, symbol.to_s]) do
|
78
72
|
where(symbol: symbol).first
|
79
73
|
end
|
80
74
|
end
|
@@ -107,6 +101,20 @@ module DomainNeutral
|
|
107
101
|
def enable_caching(*args)
|
108
102
|
self.caching_enabled = args.size > 0 ? args.first : true
|
109
103
|
end
|
104
|
+
|
105
|
+
private
|
106
|
+
# Ensures cache is cleared if nil result
|
107
|
+
def fetch(key, options = nil)
|
108
|
+
if caching_enabled
|
109
|
+
result = Rails.cache.fetch(key, options) do
|
110
|
+
yield
|
111
|
+
end
|
112
|
+
Rails.cache.delete(key) unless result
|
113
|
+
else
|
114
|
+
result = yield
|
115
|
+
end
|
116
|
+
result
|
117
|
+
end
|
110
118
|
end
|
111
119
|
|
112
120
|
# Store symbol
|
@@ -95,16 +95,24 @@ module DomainNeutral
|
|
95
95
|
@tc.enable_caching # true
|
96
96
|
end
|
97
97
|
should 'delegate find to super' do
|
98
|
-
expect_cached [@tc.name, 44] do
|
98
|
+
expect_cached [@tc.name, 44], nil do
|
99
99
|
assert_equal 44, @tc.find(44)
|
100
100
|
end
|
101
101
|
end
|
102
102
|
should 'lookup object by symbol' do
|
103
|
-
expect_cached [@tc.name, 'expert'] do
|
103
|
+
expect_cached [@tc.name, 'expert'], nil do
|
104
104
|
@tc.expects(:where).with(symbol: :expert).returns([:ok])
|
105
105
|
assert_equal :ok, @tc.find_by_symbol( :expert)
|
106
106
|
end
|
107
107
|
end
|
108
|
+
should 'delete cached entry if not found' do
|
109
|
+
expect_cached [@tc.name, 'expert'], nil do |cache|
|
110
|
+
@tc.expects(:where).with(symbol: :expert).returns([nil])
|
111
|
+
assert_equal nil, @tc.find_by_symbol( :expert)
|
112
|
+
assert_equal [@tc.name, 'expert'], cache.called?( :delete)
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
108
116
|
end
|
109
117
|
end
|
110
118
|
|
data/test/dummy/db/test.sqlite3
CHANGED
Binary file
|