picky 4.12.11 → 4.12.12
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/lib/picky/backends/redis.rb +25 -22
- data/spec/functional/realtime_spec.rb +10 -0
- metadata +3 -3
data/lib/picky/backends/redis.rb
CHANGED
|
@@ -233,28 +233,18 @@ module Picky
|
|
|
233
233
|
#
|
|
234
234
|
begin
|
|
235
235
|
if identifiers.size > 1
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
#
|
|
249
|
-
@ids_script_hash = Digest::SHA1.hexdigest @ids_script
|
|
250
|
-
client.eval @ids_script,
|
|
251
|
-
identifiers,
|
|
252
|
-
[
|
|
253
|
-
generate_intermediate_result_id,
|
|
254
|
-
offset,
|
|
255
|
-
(offset + amount)
|
|
256
|
-
]
|
|
257
|
-
end
|
|
236
|
+
# Reuse script already installed in Redis.
|
|
237
|
+
#
|
|
238
|
+
# Note: This may raise an error in Redis,
|
|
239
|
+
# when the script is not installed.
|
|
240
|
+
#
|
|
241
|
+
client.evalsha @ids_script_hash,
|
|
242
|
+
identifiers,
|
|
243
|
+
[
|
|
244
|
+
generate_intermediate_result_id,
|
|
245
|
+
offset,
|
|
246
|
+
(offset + amount)
|
|
247
|
+
]
|
|
258
248
|
else
|
|
259
249
|
# No complex calculation necessary.
|
|
260
250
|
#
|
|
@@ -262,6 +252,19 @@ module Picky
|
|
|
262
252
|
offset,
|
|
263
253
|
(offset + amount)
|
|
264
254
|
end
|
|
255
|
+
rescue RuntimeError => e # Redis::CommandError
|
|
256
|
+
# Install script in Redis.
|
|
257
|
+
#
|
|
258
|
+
# TODO Use SCRIPT LOAD, then retry?
|
|
259
|
+
#
|
|
260
|
+
@ids_script_hash = Digest::SHA1.hexdigest @ids_script
|
|
261
|
+
client.eval @ids_script,
|
|
262
|
+
identifiers,
|
|
263
|
+
[
|
|
264
|
+
generate_intermediate_result_id,
|
|
265
|
+
offset,
|
|
266
|
+
(offset + amount)
|
|
267
|
+
]
|
|
265
268
|
end
|
|
266
269
|
end
|
|
267
270
|
end
|
|
@@ -507,6 +507,16 @@ describe "Realtime Indexing" do
|
|
|
507
507
|
|
|
508
508
|
books.search('author:author title:Titl').ids.should == ['one']
|
|
509
509
|
end
|
|
510
|
+
|
|
511
|
+
it 'finds the first entry the second time, even if the Redis script cache is flushed' do
|
|
512
|
+
books.search('author:author title:Titl')
|
|
513
|
+
|
|
514
|
+
books.search('author:author title:Titl').ids.should == ['one']
|
|
515
|
+
|
|
516
|
+
index.backend.client.script 'flush'
|
|
517
|
+
|
|
518
|
+
books.search('author:author title:Titl').ids.should == ['one']
|
|
519
|
+
end
|
|
510
520
|
|
|
511
521
|
it 'allows removing a single category and leaving the others alone' do
|
|
512
522
|
index[:title].remove 'one'
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: picky
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 4.12.
|
|
4
|
+
version: 4.12.12
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -34,7 +34,7 @@ dependencies:
|
|
|
34
34
|
requirements:
|
|
35
35
|
- - ~>
|
|
36
36
|
- !ruby/object:Gem::Version
|
|
37
|
-
version: 4.12.
|
|
37
|
+
version: 4.12.12
|
|
38
38
|
type: :development
|
|
39
39
|
prerelease: false
|
|
40
40
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -42,7 +42,7 @@ dependencies:
|
|
|
42
42
|
requirements:
|
|
43
43
|
- - ~>
|
|
44
44
|
- !ruby/object:Gem::Version
|
|
45
|
-
version: 4.12.
|
|
45
|
+
version: 4.12.12
|
|
46
46
|
- !ruby/object:Gem::Dependency
|
|
47
47
|
name: text
|
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|