ts-delayed-delta 1.0.0 → 1.0.1
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/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
|