double_write_cache_stores 0.0.4 → 0.1.0
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.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dcd53dd7056f314c57ea44c94d975750a86778cd
|
4
|
+
data.tar.gz: 0de0d1f3c473b22c5d13248b9870e9cc9acea696
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 24167f49575886bb2cbef672856da4edc1ecc607df17e27d6f412e2bc3906d92f0d6965504a647e25810d578ded66fe41a7552b12e7b302e18b448418dce356f
|
7
|
+
data.tar.gz: b217321524de1014d0cbdd65d52e1058f4e1e0704b8b30658d2c58613d8798ca1b4535c0c73842d7f62a53cadf21322d43c9eef6f14b90b95ebdaf0673cb41ca
|
data/README.md
CHANGED
@@ -2,16 +2,10 @@
|
|
2
2
|
|
3
3
|
pre-warning(double write to cach store and other cache store) cache store wrapper. will switch cache store.
|
4
4
|
|
5
|
-
##
|
5
|
+
## Support
|
6
6
|
|
7
|
-
- Padrino::Cache(moneta)
|
8
7
|
- ActiveSupport::Cache::DalliStore(Dalli)
|
9
|
-
- Padrino::Cache
|
10
|
-
|
11
|
-
## Support backend cache store
|
12
|
-
|
13
|
-
- ActiveSupport::Cache::DalliStore(Dalli)
|
14
|
-
- Padrino::Cache::Store::Memcache
|
8
|
+
- Padrino::Cache(v0.12.x)
|
15
9
|
|
16
10
|
## Installation
|
17
11
|
|
@@ -24,6 +24,5 @@ Gem::Specification.new do |spec|
|
|
24
24
|
spec.add_development_dependency "activesupport", "= 3.2.15"
|
25
25
|
spec.add_development_dependency "dalli", "= 2.6.4"
|
26
26
|
spec.add_development_dependency "pry"
|
27
|
-
spec.add_development_dependency "padrino", "0.
|
28
|
-
spec.add_development_dependency "tilt", "1.3.7"
|
27
|
+
spec.add_development_dependency "padrino", "0.12.2"
|
29
28
|
end
|
@@ -40,7 +40,9 @@ class DoubleWriteCacheStores::Client
|
|
40
40
|
|
41
41
|
def touch(key)
|
42
42
|
result = false
|
43
|
-
|
43
|
+
|
44
|
+
read_and_write_backend = get_backend @read_and_write_store
|
45
|
+
|
44
46
|
if read_and_write_backend && read_and_write_backend.respond_to?(:touch)
|
45
47
|
result = read_and_write_backend.touch key
|
46
48
|
write_only_store_touch key
|
@@ -49,22 +51,34 @@ class DoubleWriteCacheStores::Client
|
|
49
51
|
end
|
50
52
|
|
51
53
|
def flush
|
52
|
-
if flush_cache_store || flush_cache_store(:
|
54
|
+
if flush_cache_store || flush_cache_store(:flush)
|
53
55
|
true
|
54
56
|
else
|
55
57
|
false
|
56
58
|
end
|
57
59
|
end
|
58
60
|
|
61
|
+
alias :clear :flush
|
62
|
+
|
59
63
|
private
|
60
64
|
|
65
|
+
def get_backend cache_store
|
66
|
+
if cache_store.is_a? Padrino::Cache::LegacyStore
|
67
|
+
cache_store.instance_variable_get('@adapter').instance_variable_get('@adapter').instance_variable_get('@backend')
|
68
|
+
else
|
69
|
+
cache_store.instance_variable_get '@backend'
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
61
73
|
def write_cache_store(key, value, options = nil)
|
62
74
|
set_or_write_method_call @read_and_write_store, key, value, options
|
63
75
|
set_or_write_method_call @write_only_store, key, value, options if @write_only_store
|
64
76
|
end
|
65
77
|
|
66
78
|
def set_or_write_method_call cache_store, key, value, options
|
67
|
-
if cache_store.respond_to? :
|
79
|
+
if cache_store.respond_to? :[]=
|
80
|
+
cache_store[key] = value
|
81
|
+
elsif cache_store.respond_to? :set
|
68
82
|
cache_store.set key, value, options
|
69
83
|
elsif cache_store.respond_to? :write
|
70
84
|
cache_store.write key, value, options
|
@@ -72,14 +86,16 @@ class DoubleWriteCacheStores::Client
|
|
72
86
|
end
|
73
87
|
|
74
88
|
def get_or_read_method_call key
|
75
|
-
if @read_and_write_store.respond_to? :
|
89
|
+
if @read_and_write_store.respond_to? :[]
|
90
|
+
@read_and_write_store[key]
|
91
|
+
elsif @read_and_write_store.respond_to? :get
|
76
92
|
@read_and_write_store.get key
|
77
93
|
elsif @read_and_write_store.respond_to? :read
|
78
94
|
@read_and_write_store.read key
|
79
95
|
end
|
80
96
|
end
|
81
97
|
|
82
|
-
def flush_cache_store(method = :
|
98
|
+
def flush_cache_store(method = :clear)
|
83
99
|
if @read_and_write_store.respond_to? method
|
84
100
|
if @write_only_store && @write_only_store.respond_to?(method)
|
85
101
|
@write_only_store.send method
|
@@ -92,8 +108,7 @@ class DoubleWriteCacheStores::Client
|
|
92
108
|
|
93
109
|
def write_only_store_touch(key)
|
94
110
|
if @write_only_store
|
95
|
-
write_only_backend =
|
96
|
-
if write_only_backend
|
111
|
+
if write_only_backend = get_backend(@write_only_store)
|
97
112
|
write_only_backend.touch key if write_only_backend.respond_to?(:touch)
|
98
113
|
end
|
99
114
|
end
|
@@ -29,10 +29,13 @@ describe DoubleWriteCacheStores::Client do
|
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
32
|
-
describe '
|
33
|
-
|
32
|
+
describe '#[]=' do
|
33
|
+
before do
|
34
34
|
copy_cache_store['key'] = 'example-value'
|
35
|
-
|
35
|
+
end
|
36
|
+
it 'set value to multi store' do
|
37
|
+
expect(read_and_write_store.read 'key').to eq 'example-value'
|
38
|
+
expect(write_only_store.read 'key').to eq 'example-value'
|
36
39
|
end
|
37
40
|
end
|
38
41
|
|
@@ -56,10 +59,10 @@ describe DoubleWriteCacheStores::Client do
|
|
56
59
|
{ :namespace => "app_v1", :compress => true }
|
57
60
|
end
|
58
61
|
let :support_touch_read_and_write_store do
|
59
|
-
Padrino::Cache
|
62
|
+
Padrino::Cache.new(:Memcached, :backend => ::Dalli::Client.new('localhost:11211', options))
|
60
63
|
end
|
61
64
|
let :support_touch_write_only_store do
|
62
|
-
Padrino::Cache
|
65
|
+
Padrino::Cache.new(:Memcached, :backend => ::Dalli::Client.new('localhost:21211', options))
|
63
66
|
end
|
64
67
|
let :support_touch_copy_cache_store do
|
65
68
|
DoubleWriteCacheStores::Client.new support_touch_read_and_write_store, support_touch_write_only_store
|
@@ -67,26 +70,30 @@ describe DoubleWriteCacheStores::Client do
|
|
67
70
|
before do
|
68
71
|
support_touch_copy_cache_store.set 'touch-key', 'touch-value', :expires_in => 1.day
|
69
72
|
end
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
expect(support_touch_copy_cache_store.touch 'touch-key').to be true
|
74
|
-
expect(support_touch_copy_cache_store.touch 'non-set-key').to be nil
|
75
|
-
end
|
73
|
+
it 'example' do
|
74
|
+
expect(support_touch_copy_cache_store.touch 'touch-key').to be_true
|
75
|
+
expect(support_touch_copy_cache_store.touch 'non-set-key').to be_nil
|
76
76
|
end
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
DoubleWriteCacheStores::Client.new ActiveSupport::Cache::DalliStore.new('localhost:11211', options), ActiveSupport::Cache::DalliStore.new('localhost:21211', options)
|
77
|
+
context 'when touch non support backend' do
|
78
|
+
before do
|
79
|
+
copy_cache_store.write 'unsupport-touch-key', 'touch-value', :expires_in => 1.day
|
81
80
|
end
|
81
|
+
it 'not doing touch' do
|
82
|
+
expect(copy_cache_store.touch 'unsupport-touch-key').to be_false
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
82
86
|
|
87
|
+
describe '#[]' do
|
88
|
+
context 'when standard case' do
|
83
89
|
before do
|
84
|
-
|
90
|
+
copy_cache_store.write 'key', 'example-read-value', :expires_in => 1.day
|
85
91
|
end
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
92
|
+
it 'get read key value from multi store' do
|
93
|
+
expect(copy_cache_store['key']).to eq 'example-read-value'
|
94
|
+
end
|
95
|
+
it 'not get no set key-value' do
|
96
|
+
expect(copy_cache_store['not-set-key']).to be_nil
|
90
97
|
end
|
91
98
|
end
|
92
99
|
end
|
@@ -132,10 +139,10 @@ describe DoubleWriteCacheStores::Client do
|
|
132
139
|
{ :namespace => "app_v1", :compress => true }
|
133
140
|
end
|
134
141
|
let :support_flash_read_and_write_store do
|
135
|
-
Padrino::Cache
|
142
|
+
Padrino::Cache.new(:Memcached, :backend => ::Dalli::Client.new('localhost:11211', options))
|
136
143
|
end
|
137
144
|
let :support_flash_write_only_store do
|
138
|
-
Padrino::Cache
|
145
|
+
Padrino::Cache.new(:Memcached, :backend => ::Dalli::Client.new('localhost:21211', options))
|
139
146
|
end
|
140
147
|
let :support_flash_copy_cache_store do
|
141
148
|
DoubleWriteCacheStores::Client.new support_flash_read_and_write_store, support_flash_write_only_store
|
@@ -145,10 +152,51 @@ describe DoubleWriteCacheStores::Client do
|
|
145
152
|
end
|
146
153
|
it 'example' do
|
147
154
|
expect(support_flash_copy_cache_store.get 'will-flush-key').to eq 'will-flush-value'
|
148
|
-
expect(support_flash_copy_cache_store.flush).to
|
155
|
+
expect(support_flash_copy_cache_store.flush).to be_true
|
149
156
|
expect(support_flash_copy_cache_store.get 'will-flush-key').to be_nil
|
150
157
|
end
|
151
158
|
end
|
152
159
|
end
|
153
160
|
|
161
|
+
describe '#clear' do
|
162
|
+
before do
|
163
|
+
copy_cache_store.write 'will-flush-key', 'will-flush-value', :expires_in => 1.day
|
164
|
+
end
|
165
|
+
it 'alias #flush' do
|
166
|
+
expect(copy_cache_store.clear).to eq true
|
167
|
+
expect(copy_cache_store.read 'will-flush-key').to be_nil
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
describe 'check any cache_store' do
|
172
|
+
let :options do
|
173
|
+
{ :namespace => "app_v1", :compress => true }
|
174
|
+
end
|
175
|
+
|
176
|
+
it 'ActiveSupport::Cache::DalliStore x ActiveSupport::Cache::DalliStore' do
|
177
|
+
any_cach_store_checks ActiveSupport::Cache.lookup_store(:dalli_store, 'localhost:11211'), ActiveSupport::Cache.lookup_store(:dalli_store, 'localhost:21211')
|
178
|
+
end
|
179
|
+
|
180
|
+
it 'Padrino::Cache x Padrino::Cache' do
|
181
|
+
write_and_read_memcached = ::Dalli::Client.new 'localhost:11211', options
|
182
|
+
read_only_memcached = ::Dalli::Client.new 'localhost:21211', options
|
183
|
+
any_cach_store_checks Padrino::Cache.new(:Memcached, :backend => write_and_read_memcached), Padrino::Cache.new(:Memcached, :backend => read_only_memcached)
|
184
|
+
end
|
185
|
+
|
186
|
+
def any_cach_store_checks read_and_write_store, write_only_store
|
187
|
+
double_write_cache_store = DoubleWriteCacheStores::Client.new read_and_write_store, write_only_store
|
188
|
+
double_write_cache_store['aaa'] = 'aaa-value'
|
189
|
+
double_write_cache_store.set 'bbb', 'bbb-value'
|
190
|
+
double_write_cache_store.write 'ccc', 'ccc-value'
|
191
|
+
|
192
|
+
expect(double_write_cache_store['aaa']).to eq 'aaa-value'
|
193
|
+
expect(double_write_cache_store.get 'bbb').to eq 'bbb-value'
|
194
|
+
expect(double_write_cache_store.read 'ccc').to eq 'ccc-value'
|
195
|
+
|
196
|
+
expect(double_write_cache_store['zzz']).to eq nil
|
197
|
+
expect(double_write_cache_store.get 'zzz').to eq nil
|
198
|
+
expect(double_write_cache_store.read 'zzz').to eq nil
|
199
|
+
end
|
200
|
+
end
|
201
|
+
|
154
202
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: double_write_cache_stores
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- hirocaster
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-05-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -100,28 +100,14 @@ dependencies:
|
|
100
100
|
requirements:
|
101
101
|
- - '='
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: 0.
|
103
|
+
version: 0.12.2
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - '='
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: 0.
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: tilt
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - '='
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: 1.3.7
|
118
|
-
type: :development
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - '='
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: 1.3.7
|
110
|
+
version: 0.12.2
|
125
111
|
description: ' pre-warning(double write to cach store and other cache store) cache
|
126
112
|
store wrapper. will switch cache store. '
|
127
113
|
email:
|