ts-delayed-delta 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/features/support/env.rb +3 -1
- data/lib/thinking_sphinx/deltas/delayed_delta/delta_job.rb +4 -4
- data/lib/thinking_sphinx/deltas/delayed_delta/flag_as_deleted_job.rb +11 -9
- data/lib/thinking_sphinx/deltas/delayed_delta/job.rb +1 -1
- data/lib/thinking_sphinx/deltas/delayed_delta.rb +2 -2
- data/spec/spec_helper.rb +3 -1
- data/spec/thinking_sphinx/deltas/delayed_delta/delta_job_spec.rb +13 -2
- data/spec/thinking_sphinx/deltas/delayed_delta/flag_as_deleted_job_spec.rb +9 -1
- data/spec/thinking_sphinx/deltas/delayed_delta_spec.rb +7 -5
- metadata +12 -2
data/features/support/env.rb
CHANGED
@@ -11,7 +11,9 @@ require 'cucumber/thinking_sphinx/internal_world'
|
|
11
11
|
world = Cucumber::ThinkingSphinx::InternalWorld.new
|
12
12
|
world.configure_database
|
13
13
|
|
14
|
-
|
14
|
+
SphinxVersion = ENV['VERSION'] || '0.9.8'
|
15
|
+
|
16
|
+
require "thinking_sphinx/#{SphinxVersion}"
|
15
17
|
require 'thinking_sphinx/deltas/delayed_delta'
|
16
18
|
|
17
19
|
world.setup
|
@@ -1,14 +1,14 @@
|
|
1
1
|
# A simple job class that processes a given index.
|
2
2
|
#
|
3
3
|
class ThinkingSphinx::Deltas::DeltaJob
|
4
|
-
attr_accessor :
|
4
|
+
attr_accessor :indexes
|
5
5
|
|
6
6
|
# Initialises the object with an index name.
|
7
7
|
#
|
8
8
|
# @param [String] index the name of the Sphinx index
|
9
9
|
#
|
10
|
-
def initialize(
|
11
|
-
@
|
10
|
+
def initialize(indexes)
|
11
|
+
@indexes = indexes
|
12
12
|
end
|
13
13
|
|
14
14
|
# Runs Sphinx's indexer tool to process the index. Currently assumes Sphinx is
|
@@ -19,7 +19,7 @@ class ThinkingSphinx::Deltas::DeltaJob
|
|
19
19
|
def perform
|
20
20
|
config = ThinkingSphinx::Configuration.instance
|
21
21
|
|
22
|
-
output = `#{config.bin_path}#{config.indexer_binary_name} --config #{config.config_file} --rotate #{
|
22
|
+
output = `#{config.bin_path}#{config.indexer_binary_name} --config #{config.config_file} --rotate #{indexes.join(' ')}`
|
23
23
|
puts output unless ThinkingSphinx.suppress_delta_output?
|
24
24
|
|
25
25
|
true
|
@@ -2,7 +2,7 @@
|
|
2
2
|
# 'deleted'.
|
3
3
|
#
|
4
4
|
class ThinkingSphinx::Deltas::FlagAsDeletedJob
|
5
|
-
attr_accessor :
|
5
|
+
attr_accessor :indexes, :document_id
|
6
6
|
|
7
7
|
# Initialises the object with an index name and document id. Please note that
|
8
8
|
# the document id is Sphinx's unique identifier, and will almost certainly not
|
@@ -11,8 +11,8 @@ class ThinkingSphinx::Deltas::FlagAsDeletedJob
|
|
11
11
|
# @param [String] index The index name
|
12
12
|
# @param [Integer] document_id The document id
|
13
13
|
#
|
14
|
-
def initialize(
|
15
|
-
@
|
14
|
+
def initialize(indexes, document_id)
|
15
|
+
@indexes, @document_id = indexes, document_id
|
16
16
|
end
|
17
17
|
|
18
18
|
# Updates the sphinx_deleted attribute for the given document, setting the
|
@@ -26,12 +26,14 @@ class ThinkingSphinx::Deltas::FlagAsDeletedJob
|
|
26
26
|
def perform
|
27
27
|
config = ThinkingSphinx::Configuration.instance
|
28
28
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
ThinkingSphinx
|
29
|
+
indexes.each do |index|
|
30
|
+
config.client.update(
|
31
|
+
index,
|
32
|
+
['sphinx_deleted'],
|
33
|
+
{@document_id => [1]}
|
34
|
+
) if ThinkingSphinx.sphinx_running? &&
|
35
|
+
ThinkingSphinx::Search.search_for_id(@document_id, index)
|
36
|
+
end
|
35
37
|
|
36
38
|
true
|
37
39
|
end
|
@@ -16,7 +16,7 @@ class ThinkingSphinx::Deltas::Job < Delayed::Job
|
|
16
16
|
# @param [Integer] priority (0)
|
17
17
|
#
|
18
18
|
def self.enqueue(object, priority = 0)
|
19
|
-
Delayed::Job.enqueue(object, priority) unless duplicates_exist(object)
|
19
|
+
::Delayed::Job.enqueue(object, priority) unless duplicates_exist(object)
|
20
20
|
end
|
21
21
|
|
22
22
|
# Remove all Thinking Sphinx/Delayed Delta jobs from the queue. If the
|
@@ -34,13 +34,13 @@ class ThinkingSphinx::Deltas::DelayedDelta < ThinkingSphinx::Deltas::DefaultDelt
|
|
34
34
|
return true if skip? instance
|
35
35
|
|
36
36
|
ThinkingSphinx::Deltas::Job.enqueue(
|
37
|
-
ThinkingSphinx::Deltas::DeltaJob.new(
|
37
|
+
ThinkingSphinx::Deltas::DeltaJob.new(model.delta_index_names),
|
38
38
|
ThinkingSphinx::Configuration.instance.delayed_job_priority
|
39
39
|
)
|
40
40
|
|
41
41
|
Delayed::Job.enqueue(
|
42
42
|
ThinkingSphinx::Deltas::FlagAsDeletedJob.new(
|
43
|
-
|
43
|
+
model.core_index_names, instance.sphinx_document_id
|
44
44
|
),
|
45
45
|
ThinkingSphinx::Configuration.instance.delayed_job_priority
|
46
46
|
) if instance
|
data/spec/spec_helper.rb
CHANGED
@@ -4,7 +4,9 @@ require 'rubygems'
|
|
4
4
|
require 'spec'
|
5
5
|
require 'spec/autorun'
|
6
6
|
|
7
|
-
|
7
|
+
SphinxVersion = ENV['VERSION'] || '0.9.8'
|
8
|
+
|
9
|
+
require "thinking_sphinx/#{SphinxVersion}"
|
8
10
|
require 'thinking_sphinx/deltas/delayed_delta'
|
9
11
|
|
10
12
|
Spec::Runner.configure do |config|
|
@@ -5,7 +5,7 @@ describe ThinkingSphinx::Deltas::DeltaJob do
|
|
5
5
|
before :each do
|
6
6
|
ThinkingSphinx.suppress_delta_output = false
|
7
7
|
|
8
|
-
@delta_job = ThinkingSphinx::Deltas::DeltaJob.new('foo_core')
|
8
|
+
@delta_job = ThinkingSphinx::Deltas::DeltaJob.new(['foo_core'])
|
9
9
|
@delta_job.stub! :` => true
|
10
10
|
@delta_job.stub! :puts => nil
|
11
11
|
end
|
@@ -23,7 +23,7 @@ describe ThinkingSphinx::Deltas::DeltaJob do
|
|
23
23
|
@delta_job.perform
|
24
24
|
end
|
25
25
|
|
26
|
-
it "should process just the requested
|
26
|
+
it "should process just the requested indexes" do
|
27
27
|
@delta_job.should_receive(:`) do |command|
|
28
28
|
command.should match(/foo_core/)
|
29
29
|
command.should_not match(/--all/)
|
@@ -31,5 +31,16 @@ describe ThinkingSphinx::Deltas::DeltaJob do
|
|
31
31
|
|
32
32
|
@delta_job.perform
|
33
33
|
end
|
34
|
+
|
35
|
+
context 'multiple indexes' do
|
36
|
+
it "should process all requested indexes" do
|
37
|
+
@delta_job.indexes = ['foo_core', 'bar_core']
|
38
|
+
@delta_job.should_receive(:`) do |command|
|
39
|
+
command.should match(/foo_core bar_core/)
|
40
|
+
end
|
41
|
+
|
42
|
+
@delta_job.perform
|
43
|
+
end
|
44
|
+
end
|
34
45
|
end
|
35
46
|
end
|
@@ -10,7 +10,7 @@ describe ThinkingSphinx::Deltas::FlagAsDeletedJob do
|
|
10
10
|
ThinkingSphinx::Search.stub!(:search_for_id => true)
|
11
11
|
ThinkingSphinx.stub!(:sphinx_running? => true)
|
12
12
|
|
13
|
-
@job = ThinkingSphinx::Deltas::FlagAsDeletedJob.new('foo_core', 12)
|
13
|
+
@job = ThinkingSphinx::Deltas::FlagAsDeletedJob.new(['foo_core'], 12)
|
14
14
|
end
|
15
15
|
|
16
16
|
it "should not update if Sphinx isn't running" do
|
@@ -35,6 +35,14 @@ describe ThinkingSphinx::Deltas::FlagAsDeletedJob do
|
|
35
35
|
@job.perform
|
36
36
|
end
|
37
37
|
|
38
|
+
it "should update all specified indexes" do
|
39
|
+
@job.indexes = ['foo_core', 'bar_core']
|
40
|
+
@client.should_receive(:update).with('foo_core', anything, anything)
|
41
|
+
@client.should_receive(:update).with('bar_core', anything, anything)
|
42
|
+
|
43
|
+
@job.perform
|
44
|
+
end
|
45
|
+
|
38
46
|
it "should update the sphinx_deleted attribute" do
|
39
47
|
@client.should_receive(:update) do |index, attributes, values|
|
40
48
|
attributes.should == ['sphinx_deleted']
|
@@ -8,7 +8,7 @@ describe ThinkingSphinx::Deltas::DelayedDelta do
|
|
8
8
|
ThinkingSphinx::Configuration.instance.delayed_job_priority = 2
|
9
9
|
|
10
10
|
ThinkingSphinx::Deltas::Job.stub!(:enqueue => true)
|
11
|
-
Delayed::Job.stub!(:enqueue => true)
|
11
|
+
Delayed::Job.stub!(:enqueue => true, :inspect => "Delayed::Job")
|
12
12
|
|
13
13
|
@delayed_delta = ThinkingSphinx::Deltas::DelayedDelta.new(
|
14
14
|
stub('instance'), {}
|
@@ -18,6 +18,8 @@ describe ThinkingSphinx::Deltas::DelayedDelta do
|
|
18
18
|
@model = stub('foo')
|
19
19
|
@model.stub!(:name => 'foo')
|
20
20
|
@model.stub!(:source_of_sphinx_index => @model)
|
21
|
+
@model.stub!(:core_index_names => ['foo_core'])
|
22
|
+
@model.stub!(:delta_index_names => ['foo_delta'])
|
21
23
|
|
22
24
|
@instance = stub('instance')
|
23
25
|
@instance.stub!(:sphinx_document_id => 42)
|
@@ -77,9 +79,9 @@ describe ThinkingSphinx::Deltas::DelayedDelta do
|
|
77
79
|
end
|
78
80
|
end
|
79
81
|
|
80
|
-
it "should enqueue a delta job for the appropriate
|
82
|
+
it "should enqueue a delta job for the appropriate indexes" do
|
81
83
|
ThinkingSphinx::Deltas::Job.should_receive(:enqueue) do |job, priority|
|
82
|
-
job.
|
84
|
+
job.indexes.should == ['foo_delta']
|
83
85
|
end
|
84
86
|
|
85
87
|
@delayed_delta.index(@model)
|
@@ -93,9 +95,9 @@ describe ThinkingSphinx::Deltas::DelayedDelta do
|
|
93
95
|
@delayed_delta.index(@model)
|
94
96
|
end
|
95
97
|
|
96
|
-
it "should enqueue a flag-as-deleted job for the appropriate
|
98
|
+
it "should enqueue a flag-as-deleted job for the appropriate indexes" do
|
97
99
|
Delayed::Job.should_receive(:enqueue) do |job, priority|
|
98
|
-
job.
|
100
|
+
job.indexes.should == ['foo_core']
|
99
101
|
end
|
100
102
|
|
101
103
|
@delayed_delta.index(@model, @instance)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ts-delayed-delta
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pat Allan
|
@@ -9,9 +9,19 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-11-
|
12
|
+
date: 2009-11-26 00:00:00 +11:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: thinking-sphinx
|
17
|
+
type: :runtime
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 1.3.6
|
24
|
+
version:
|
15
25
|
- !ruby/object:Gem::Dependency
|
16
26
|
name: delayed_job
|
17
27
|
type: :runtime
|