readthis 0.5.1 → 0.5.2
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 +4 -4
- data/CHANGELOG.md +6 -0
- data/lib/readthis/cache.rb +53 -8
- data/lib/readthis/version.rb +1 -1
- 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: f71b3b7fac83a8203aa382cb87a4684240d427df
|
4
|
+
data.tar.gz: 8e87900ed9f5fb0199d20fb674ef7b8c988886b6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 47a9479f67d9550b32798f8122209c569281e16d1d85402cf47af4ae7676de0fc65e6d6f5ffa87c99cc18606774f9d30a4ced4f8867ede0bdf8bb38872fbc50e
|
7
|
+
data.tar.gz: 2fe39b8a2f99bc1b4a55865cd114f49280311593ac157511874934f198f104b70ff04f3f4cdd90c1fd95794dd1b1d83965014db0afe69c60523fe7052e74549a
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
## v0.5.2 2015-01-09
|
2
|
+
|
3
|
+
- Fixed: Remove the `pipeline` around `fetch_multi` writing. This will slow down
|
4
|
+
`fetch_multi` in cache miss situations for now. It prevents a difficult to
|
5
|
+
track down exception in multi-threaded situations.
|
6
|
+
|
1
7
|
## v0.5.1 2014-12-30
|
2
8
|
|
3
9
|
- Fixed: The `clear` method now accepts an argument for compatibility with other
|
data/lib/readthis/cache.rb
CHANGED
@@ -113,6 +113,38 @@ module Readthis
|
|
113
113
|
end
|
114
114
|
end
|
115
115
|
|
116
|
+
# Fetches data from the cache, using the given key. If there is data in the
|
117
|
+
# cache with the given key, then that data is returned.
|
118
|
+
#
|
119
|
+
# If there is no such data in the cache (a cache miss), then `nil` will be
|
120
|
+
# returned. However, if a block has been passed, that block will be passed
|
121
|
+
# the key and executed in the event of a cache miss. The return value of
|
122
|
+
# the block will be written to the cache under the given cache key, and
|
123
|
+
# that return value will be returned.
|
124
|
+
#
|
125
|
+
# @param [String] Key for lookup
|
126
|
+
# @param [Block] Optional block for generating the value when missing
|
127
|
+
# @param options [Hash] Optional overrides
|
128
|
+
# @option options [Boolean] :force Force a cache miss
|
129
|
+
#
|
130
|
+
# @example Typical
|
131
|
+
#
|
132
|
+
# cache.write('today', 'Monday')
|
133
|
+
# cache.fetch('today') # => "Monday"
|
134
|
+
# cache.fetch('city') # => nil
|
135
|
+
#
|
136
|
+
# @example With a block
|
137
|
+
#
|
138
|
+
# cache.fetch('city') do
|
139
|
+
# 'Duckburgh'
|
140
|
+
# end
|
141
|
+
# cache.fetch('city') # => "Duckburgh"
|
142
|
+
#
|
143
|
+
# @example Cache Miss
|
144
|
+
#
|
145
|
+
# cache.write('today', 'Monday')
|
146
|
+
# cache.fetch('today', force: true) # => nil
|
147
|
+
#
|
116
148
|
def fetch(key, options = {})
|
117
149
|
value = read(key, options) unless options[:force]
|
118
150
|
|
@@ -166,6 +198,20 @@ module Readthis
|
|
166
198
|
end
|
167
199
|
end
|
168
200
|
|
201
|
+
# Read multiple values at once from the cache. Options can be passed in the
|
202
|
+
# last argument.
|
203
|
+
#
|
204
|
+
# @overload read_multi(keys)
|
205
|
+
# Return all values for the given keys.
|
206
|
+
# @param [String] One or more keys to fetch
|
207
|
+
#
|
208
|
+
# @return [Hash] A hash mapping keys to the values found.
|
209
|
+
#
|
210
|
+
# @example
|
211
|
+
#
|
212
|
+
# cache.write('a', 1)
|
213
|
+
# cache.read_multi('a', 'b') # => { 'a' => 1, 'b' => nil }
|
214
|
+
#
|
169
215
|
def read_multi(*keys)
|
170
216
|
options = merged_options(extract_options!(keys))
|
171
217
|
mapping = keys.map { |key| namespaced_key(key, options) }
|
@@ -182,7 +228,7 @@ module Readthis
|
|
182
228
|
# executed atomically.
|
183
229
|
#
|
184
230
|
# @overload fetch_multi(keys)
|
185
|
-
# Return all values
|
231
|
+
# Return all values for the given keys, applying the block to the key
|
186
232
|
# when a value is missing.
|
187
233
|
# @param [String] One or more keys to fetch
|
188
234
|
#
|
@@ -195,18 +241,17 @@ module Readthis
|
|
195
241
|
# cache.fetch_multi('a', 'b', expires_in: 60) do |key|
|
196
242
|
# key * 2
|
197
243
|
# end
|
244
|
+
#
|
198
245
|
def fetch_multi(*keys)
|
199
246
|
results = read_multi(*keys)
|
200
247
|
options = merged_options(extract_options!(keys))
|
201
248
|
|
202
249
|
invoke(:fetch_multi, keys) do |store|
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
results[key] = value
|
209
|
-
end
|
250
|
+
results.each do |key, value|
|
251
|
+
if value.nil?
|
252
|
+
value = yield(key)
|
253
|
+
write_entity(key, value, store, options)
|
254
|
+
results[key] = value
|
210
255
|
end
|
211
256
|
end
|
212
257
|
|
data/lib/readthis/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: readthis
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Parker Selbert
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-01-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: redis
|