warp-thinking-sphinx 1.2.12 → 1.3.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (144) hide show
  1. data/README.textile +21 -4
  2. data/VERSION +1 -0
  3. data/features/abstract_inheritance.feature +10 -0
  4. data/features/alternate_primary_key.feature +1 -1
  5. data/features/attribute_updates.feature +22 -5
  6. data/features/deleting_instances.feature +3 -0
  7. data/features/facets.feature +6 -0
  8. data/features/facets_across_model.feature +2 -2
  9. data/features/searching_across_models.feature +1 -1
  10. data/features/searching_by_index.feature +40 -0
  11. data/features/sphinx_scopes.feature +7 -0
  12. data/features/step_definitions/alpha_steps.rb +14 -1
  13. data/features/step_definitions/beta_steps.rb +1 -1
  14. data/features/step_definitions/common_steps.rb +12 -2
  15. data/features/step_definitions/facet_steps.rb +5 -1
  16. data/features/step_definitions/scope_steps.rb +4 -0
  17. data/features/step_definitions/sphinx_steps.rb +8 -4
  18. data/features/sti_searching.feature +5 -0
  19. data/features/support/{db/database.example.yml → database.example.yml} +0 -0
  20. data/features/support/db/fixtures/foxes.rb +3 -0
  21. data/features/support/db/fixtures/music.rb +4 -0
  22. data/features/support/db/fixtures/robots.rb +1 -1
  23. data/features/support/db/fixtures/tags.rb +1 -1
  24. data/features/support/db/migrations/create_alphas.rb +1 -0
  25. data/features/support/db/migrations/create_genres.rb +3 -0
  26. data/features/support/db/migrations/create_music.rb +6 -0
  27. data/features/support/db/migrations/create_robots.rb +1 -2
  28. data/features/support/env.rb +16 -1
  29. data/features/support/models/alpha.rb +12 -0
  30. data/features/support/models/comment.rb +3 -3
  31. data/features/support/models/fox.rb +5 -0
  32. data/features/support/models/genre.rb +3 -0
  33. data/features/support/models/medium.rb +5 -0
  34. data/features/support/models/music.rb +8 -0
  35. data/features/support/models/post.rb +2 -1
  36. data/features/support/models/robot.rb +4 -0
  37. data/lib/cucumber/thinking_sphinx/external_world.rb +8 -0
  38. data/lib/cucumber/thinking_sphinx/internal_world.rb +126 -0
  39. data/lib/cucumber/thinking_sphinx/sql_logger.rb +20 -0
  40. data/lib/thinking_sphinx.rb +56 -37
  41. data/lib/thinking_sphinx/active_record.rb +257 -192
  42. data/lib/thinking_sphinx/active_record/attribute_updates.rb +10 -12
  43. data/lib/thinking_sphinx/active_record/delta.rb +0 -26
  44. data/lib/thinking_sphinx/active_record/scopes.rb +37 -1
  45. data/lib/thinking_sphinx/adapters/mysql_adapter.rb +1 -1
  46. data/lib/thinking_sphinx/adapters/postgresql_adapter.rb +18 -11
  47. data/lib/thinking_sphinx/attribute.rb +19 -4
  48. data/lib/thinking_sphinx/auto_version.rb +22 -0
  49. data/lib/thinking_sphinx/configuration.rb +57 -59
  50. data/lib/thinking_sphinx/context.rb +74 -0
  51. data/lib/thinking_sphinx/deltas.rb +0 -2
  52. data/lib/thinking_sphinx/deltas/default_delta.rb +14 -20
  53. data/lib/thinking_sphinx/deploy/capistrano.rb +1 -1
  54. data/lib/thinking_sphinx/facet_search.rb +3 -1
  55. data/lib/thinking_sphinx/index.rb +77 -19
  56. data/lib/thinking_sphinx/index/builder.rb +2 -2
  57. data/lib/thinking_sphinx/search.rb +47 -9
  58. data/lib/thinking_sphinx/search_methods.rb +22 -4
  59. data/lib/thinking_sphinx/source.rb +9 -8
  60. data/lib/thinking_sphinx/source/sql.rb +5 -3
  61. data/lib/thinking_sphinx/tasks.rb +13 -57
  62. data/lib/thinking_sphinx/test.rb +52 -0
  63. data/rails/init.rb +4 -2
  64. data/spec/{lib/thinking_sphinx → thinking_sphinx}/active_record/delta_spec.rb +4 -6
  65. data/spec/{lib/thinking_sphinx → thinking_sphinx}/active_record/has_many_association_spec.rb +0 -0
  66. data/spec/thinking_sphinx/active_record/scopes_spec.rb +177 -0
  67. data/spec/thinking_sphinx/active_record_spec.rb +622 -0
  68. data/spec/{lib/thinking_sphinx → thinking_sphinx}/association_spec.rb +0 -0
  69. data/spec/{lib/thinking_sphinx → thinking_sphinx}/attribute_spec.rb +39 -0
  70. data/spec/thinking_sphinx/auto_version_spec.rb +39 -0
  71. data/spec/{lib/thinking_sphinx → thinking_sphinx}/configuration_spec.rb +27 -61
  72. data/spec/thinking_sphinx/context_spec.rb +119 -0
  73. data/spec/{lib/thinking_sphinx → thinking_sphinx}/core/array_spec.rb +0 -0
  74. data/spec/{lib/thinking_sphinx → thinking_sphinx}/core/string_spec.rb +0 -0
  75. data/spec/{lib/thinking_sphinx → thinking_sphinx}/excerpter_spec.rb +0 -0
  76. data/spec/{lib/thinking_sphinx → thinking_sphinx}/facet_search_spec.rb +0 -0
  77. data/spec/{lib/thinking_sphinx → thinking_sphinx}/facet_spec.rb +0 -0
  78. data/spec/{lib/thinking_sphinx → thinking_sphinx}/field_spec.rb +0 -0
  79. data/spec/{lib/thinking_sphinx → thinking_sphinx}/index/builder_spec.rb +24 -0
  80. data/spec/{lib/thinking_sphinx → thinking_sphinx}/index/faux_column_spec.rb +0 -0
  81. data/spec/thinking_sphinx/index_spec.rb +183 -0
  82. data/spec/{lib/thinking_sphinx → thinking_sphinx}/rails_additions_spec.rb +0 -0
  83. data/spec/{lib/thinking_sphinx → thinking_sphinx}/search_methods_spec.rb +0 -0
  84. data/spec/{lib/thinking_sphinx → thinking_sphinx}/search_spec.rb +41 -0
  85. data/spec/{lib/thinking_sphinx → thinking_sphinx}/source_spec.rb +1 -1
  86. data/spec/thinking_sphinx_spec.rb +204 -0
  87. data/tasks/distribution.rb +6 -20
  88. data/tasks/testing.rb +8 -19
  89. metadata +117 -142
  90. data/VERSION.yml +0 -4
  91. data/features/a.rb +0 -17
  92. data/features/datetime_deltas.feature +0 -66
  93. data/features/delayed_delta_indexing.feature +0 -37
  94. data/features/step_definitions/datetime_delta_steps.rb +0 -15
  95. data/features/step_definitions/delayed_delta_indexing_steps.rb +0 -7
  96. data/features/support/db/active_record.rb +0 -40
  97. data/features/support/db/fixtures/delayed_betas.rb +0 -10
  98. data/features/support/db/fixtures/thetas.rb +0 -10
  99. data/features/support/db/migrations/create_delayed_betas.rb +0 -17
  100. data/features/support/db/migrations/create_thetas.rb +0 -5
  101. data/features/support/db/mysql.rb +0 -3
  102. data/features/support/db/postgresql.rb +0 -3
  103. data/features/support/models/delayed_beta.rb +0 -7
  104. data/features/support/models/theta.rb +0 -7
  105. data/features/support/post_database.rb +0 -43
  106. data/features/support/z.rb +0 -19
  107. data/lib/thinking_sphinx/deltas/datetime_delta.rb +0 -50
  108. data/lib/thinking_sphinx/deltas/delayed_delta.rb +0 -30
  109. data/lib/thinking_sphinx/deltas/delayed_delta/delta_job.rb +0 -24
  110. data/lib/thinking_sphinx/deltas/delayed_delta/flag_as_deleted_job.rb +0 -27
  111. data/lib/thinking_sphinx/deltas/delayed_delta/job.rb +0 -26
  112. data/spec/lib/thinking_sphinx/active_record/scopes_spec.rb +0 -96
  113. data/spec/lib/thinking_sphinx/active_record_spec.rb +0 -353
  114. data/spec/lib/thinking_sphinx/deltas/job_spec.rb +0 -32
  115. data/spec/lib/thinking_sphinx/index_spec.rb +0 -45
  116. data/spec/lib/thinking_sphinx_spec.rb +0 -162
  117. data/vendor/after_commit/LICENSE +0 -20
  118. data/vendor/after_commit/README +0 -16
  119. data/vendor/after_commit/Rakefile +0 -22
  120. data/vendor/after_commit/init.rb +0 -8
  121. data/vendor/after_commit/lib/after_commit.rb +0 -45
  122. data/vendor/after_commit/lib/after_commit/active_record.rb +0 -114
  123. data/vendor/after_commit/lib/after_commit/connection_adapters.rb +0 -103
  124. data/vendor/after_commit/test/after_commit_test.rb +0 -53
  125. data/vendor/delayed_job/lib/delayed/job.rb +0 -251
  126. data/vendor/delayed_job/lib/delayed/message_sending.rb +0 -7
  127. data/vendor/delayed_job/lib/delayed/performable_method.rb +0 -55
  128. data/vendor/delayed_job/lib/delayed/worker.rb +0 -54
  129. data/vendor/riddle/lib/riddle.rb +0 -30
  130. data/vendor/riddle/lib/riddle/client.rb +0 -635
  131. data/vendor/riddle/lib/riddle/client/filter.rb +0 -53
  132. data/vendor/riddle/lib/riddle/client/message.rb +0 -66
  133. data/vendor/riddle/lib/riddle/client/response.rb +0 -84
  134. data/vendor/riddle/lib/riddle/configuration.rb +0 -33
  135. data/vendor/riddle/lib/riddle/configuration/distributed_index.rb +0 -48
  136. data/vendor/riddle/lib/riddle/configuration/index.rb +0 -142
  137. data/vendor/riddle/lib/riddle/configuration/indexer.rb +0 -19
  138. data/vendor/riddle/lib/riddle/configuration/remote_index.rb +0 -17
  139. data/vendor/riddle/lib/riddle/configuration/searchd.rb +0 -25
  140. data/vendor/riddle/lib/riddle/configuration/section.rb +0 -43
  141. data/vendor/riddle/lib/riddle/configuration/source.rb +0 -23
  142. data/vendor/riddle/lib/riddle/configuration/sql_source.rb +0 -34
  143. data/vendor/riddle/lib/riddle/configuration/xml_source.rb +0 -28
  144. data/vendor/riddle/lib/riddle/controller.rb +0 -53
data/VERSION.yml DELETED
@@ -1,4 +0,0 @@
1
- ---
2
- :major: 1
3
- :minor: 2
4
- :patch: 12
data/features/a.rb DELETED
@@ -1,17 +0,0 @@
1
- # This file exists because Cucumber likes to auto-load all ruby files
2
- puts <<-MESSAGE
3
- Cucumber 0.1.12 defaults to loading all ruby files within the features folder
4
- alphabetically. This is annoying, because some files need to be loaded before
5
- others (and others perhaps not at all, given missing dependencies). Hence this
6
- place-holder imaginatively named 'a.rb', to force this message.
7
-
8
- A work-around is to use cucumber profiles. You will find the default profile in
9
- cucumber.yml should serve your needs fine, unless you add new step definitions.
10
- When you do that, you can regenerate the YAML file by running:
11
- rake cucumber_defaults
12
-
13
- And then run specific features as follows is slightly more verbose, but it
14
- works, whereas this doesn't.
15
- cucumber -p default features/something.feature
16
- MESSAGE
17
- exit 0
@@ -1,66 +0,0 @@
1
- Feature: Datetime Delta Indexing
2
- In order to have delta indexing on frequently-updated sites
3
- Developers
4
- Should be able to use an existing datetime column to track changes
5
-
6
- Scenario: Delta Index should not fire automatically
7
- Given Sphinx is running
8
- And I am searching on thetas
9
- When I search for one
10
- Then I should get 1 result
11
-
12
- When I change the name of theta one to eleven
13
- And I wait for Sphinx to catch up
14
- And I search for one
15
- Then I should get 1 result
16
-
17
- When I search for eleven
18
- Then I should get 0 results
19
-
20
- Scenario: Delta Index should fire when jobs are run
21
- Given Sphinx is running
22
- And I am searching on thetas
23
- When I search for two
24
- Then I should get 1 result
25
-
26
- When I change the name of theta two to twelve
27
- And I wait for Sphinx to catch up
28
- And I search for twelve
29
- Then I should get 0 results
30
-
31
- When I index the theta datetime delta
32
- And I wait for Sphinx to catch up
33
- And I search for twelve
34
- Then I should get 1 result
35
-
36
- When I search for two
37
- Then I should get 0 results
38
-
39
- Scenario: New records should be merged into the core index
40
- Given Sphinx is running
41
- And I am searching on thetas
42
- When I search for thirteen
43
- Then I should get 0 results
44
-
45
- When I create a new theta named thirteen
46
- And I search for thirteen
47
- Then I should get 0 results
48
-
49
- When I index the theta datetime delta
50
- And I wait for Sphinx to catch up
51
- And I search for thirteen
52
- Then I should get 1 result
53
-
54
- When I search for the document id of theta thirteen in the theta_core index
55
- Then it should exist
56
-
57
- Scenario: Deleting records
58
- Given Sphinx is running
59
- And I am searching on thetas
60
- When I search for three
61
- Then I should get 1 result
62
-
63
- When I delete the theta named three
64
- And I wait for Sphinx to catch up
65
- And I search for three
66
- Then I should get 0 results
@@ -1,37 +0,0 @@
1
- Feature: Delayed Delta Indexing
2
- In order to have delta indexing on frequently-updated sites
3
- Developers
4
- Should be able to use delayed_job to handle delta indexes to lower system load
5
-
6
- Scenario: Delta Index should not fire automatically
7
- Given Sphinx is running
8
- And I am searching on delayed betas
9
- When I search for one
10
- Then I should get 1 result
11
-
12
- When I change the name of delayed beta one to eleven
13
- And I wait for Sphinx to catch up
14
- And I search for one
15
- Then I should get 1 result
16
-
17
- When I search for eleven
18
- Then I should get 0 results
19
-
20
- Scenario: Delta Index should fire when jobs are run
21
- Given Sphinx is running
22
- And I am searching on delayed betas
23
- When I search for one
24
- Then I should get 1 result
25
-
26
- When I change the name of delayed beta two to twelve
27
- And I wait for Sphinx to catch up
28
- And I search for twelve
29
- Then I should get 0 results
30
-
31
- When I run the delayed jobs
32
- And I wait for Sphinx to catch up
33
- And I search for twelve
34
- Then I should get 1 result
35
-
36
- When I search for two
37
- Then I should get 0 results
@@ -1,15 +0,0 @@
1
- When /^I index the theta datetime delta$/ do
2
- Theta.sphinx_indexes.first.delta_object.delayed_index(Theta)
3
- end
4
-
5
- When /^I change the name of theta (\w+) to (\w+)$/ do |current, replacement|
6
- Theta.find_by_name(current).update_attributes(:name => replacement)
7
- end
8
-
9
- When /^I create a new theta named (\w+)$/ do |name|
10
- Theta.create(:name => name)
11
- end
12
-
13
- When /^I delete the theta named (\w+)$/ do |name|
14
- Theta.find_by_name(name).destroy
15
- end
@@ -1,7 +0,0 @@
1
- When /^I run the delayed jobs$/ do
2
- Delayed::Job.work_off.inspect
3
- end
4
-
5
- When /^I change the name of delayed beta (\w+) to (\w+)$/ do |current, replacement|
6
- DelayedBeta.find_by_name(current).update_attributes(:name => replacement)
7
- end
@@ -1,40 +0,0 @@
1
- require 'yaml'
2
- require 'active_record'
3
-
4
- # Database Defaults
5
- host = "localhost"
6
- username = "thinking_sphinx"
7
- password = nil
8
-
9
- # Read in YAML file
10
- if File.exist?("features/support/db/database.yml")
11
- config = YAML.load open("features/support/db/database.yml")
12
- host = config["host"] || host
13
- username = config["username"] || username
14
- password = config["password"] || password
15
- end
16
-
17
- # Set up Connection
18
- ActiveRecord::Base.establish_connection(
19
- :adapter => Database,
20
- :database => 'thinking_sphinx',
21
- :username => username,
22
- :password => password,
23
- :host => host
24
- )
25
-
26
- # Copied from ActiveRecord's test suite
27
- ActiveRecord::Base.connection.class.class_eval do
28
- IGNORED_SQL = [
29
- /^PRAGMA/, /^SELECT currval/, /^SELECT CAST/, /^SELECT @@IDENTITY/,
30
- /^SELECT @@ROWCOUNT/, /^SHOW FIELDS/
31
- ]
32
-
33
- def execute_with_query_record(sql, name = nil, &block)
34
- $queries_executed ||= []
35
- $queries_executed << sql unless IGNORED_SQL.any? { |r| sql =~ r }
36
- execute_without_query_record(sql, name, &block)
37
- end
38
-
39
- alias_method_chain :execute, :query_record
40
- end
@@ -1,10 +0,0 @@
1
- DelayedBeta.create :name => "one"
2
- DelayedBeta.create :name => "two"
3
- DelayedBeta.create :name => "three"
4
- DelayedBeta.create :name => "four"
5
- DelayedBeta.create :name => "five"
6
- DelayedBeta.create :name => "six"
7
- DelayedBeta.create :name => "seven"
8
- DelayedBeta.create :name => "eight"
9
- DelayedBeta.create :name => "nine"
10
- DelayedBeta.create :name => "ten"
@@ -1,10 +0,0 @@
1
- Theta.create :name => "one"
2
- Theta.create :name => "two"
3
- Theta.create :name => "three"
4
- Theta.create :name => "four"
5
- Theta.create :name => "five"
6
- Theta.create :name => "six"
7
- Theta.create :name => "seven"
8
- Theta.create :name => "eight"
9
- Theta.create :name => "nine"
10
- Theta.create :name => "ten"
@@ -1,17 +0,0 @@
1
- ActiveRecord::Base.connection.create_table :delayed_betas, :force => true do |t|
2
- t.column :name, :string, :null => false
3
- t.column :delta, :boolean, :null => false, :default => false
4
- end
5
-
6
- ActiveRecord::Base.connection.create_table :delayed_jobs, :force => true do |t|
7
- t.column :priority, :integer, :default => 0
8
- t.column :attempts, :integer, :default => 0
9
- t.column :handler, :text
10
- t.column :last_error, :string
11
- t.column :run_at, :datetime
12
- t.column :locked_at, :datetime
13
- t.column :failed_at, :datetime
14
- t.column :locked_by, :string
15
- t.column :created_at, :datetime
16
- t.column :updated_at, :datetime
17
- end
@@ -1,5 +0,0 @@
1
- ActiveRecord::Base.connection.create_table :thetas, :force => true do |t|
2
- t.column :name, :string, :null => false
3
- t.column :created_at, :datetime, :null => false
4
- t.column :updated_at, :datetime, :null => false
5
- end
@@ -1,3 +0,0 @@
1
- require 'active_record'
2
- Database = defined?(JRUBY_VERSION) ? 'jdbcmysql' : 'mysql'
3
- require "active_record/connection_adapters/#{Database}_adapter"
@@ -1,3 +0,0 @@
1
- require 'active_record'
2
- Database = defined?(JRUBY_VERSION) ? 'jdbcpostgresql' : 'postgresql'
3
- require "active_record/connection_adapters/#{Database}_adapter"
@@ -1,7 +0,0 @@
1
- class DelayedBeta < ActiveRecord::Base
2
- define_index do
3
- indexes :name, :sortable => true
4
-
5
- set_property :delta => :delayed
6
- end
7
- end
@@ -1,7 +0,0 @@
1
- class Theta < ActiveRecord::Base
2
- define_index do
3
- indexes :name, :sortable => true
4
-
5
- set_property :delta => :datetime, :threshold => 1.hour
6
- end
7
- end
@@ -1,43 +0,0 @@
1
- $:.unshift File.dirname(__FILE__) + '/../../lib'
2
-
3
- require 'lib/thinking_sphinx'
4
-
5
- %w( tmp/config tmp/log tmp/db/sphinx/development ).each do |path|
6
- FileUtils.mkdir_p "#{Dir.pwd}/#{path}"
7
- end
8
-
9
- Kernel.const_set :RAILS_ROOT, "#{Dir.pwd}/tmp" unless defined?(RAILS_ROOT)
10
-
11
- at_exit do
12
- ThinkingSphinx::Configuration.instance.controller.stop
13
- sleep(1) # Ensure Sphinx has shut down completely
14
- ActiveRecord::Base.logger.close
15
- FileUtils.rm_r "#{Dir.pwd}/tmp"
16
- end
17
-
18
- # Add log file
19
- ActiveRecord::Base.logger = Logger.new open("tmp/active_record.log", "a")
20
-
21
- # Set up database tables
22
- Dir["features/support/db/migrations/*.rb"].each do |file|
23
- require file.gsub(/\.rb$/, '')
24
- end
25
-
26
- # Load Models
27
- Dir["features/support/models/*.rb"].sort.each do |file|
28
- require file.gsub(/\.rb$/, '')
29
- end
30
-
31
- ThinkingSphinx.deltas_enabled = false
32
-
33
- # Load Fixtures
34
- Dir["features/support/db/fixtures/*.rb"].each do |file|
35
- require file.gsub(/\.rb$/, '')
36
- end
37
-
38
- ThinkingSphinx.deltas_enabled = true
39
- ThinkingSphinx.suppress_delta_output = true
40
-
41
- ThinkingSphinx::Configuration.instance.build
42
- ThinkingSphinx::Configuration.instance.controller.index
43
- ThinkingSphinx::Configuration.instance.controller.start
@@ -1,19 +0,0 @@
1
- # This file exists because Cucumber likes to auto-load all ruby files
2
- puts <<-MESSAGE
3
- Cucumber 0.1.13 defaults to loading all ruby files within the features folder,
4
- with something approaching reverse-alphabetical order, and preferring the
5
- features/support folder over everything else. This is annoying, because some
6
- files need to be loaded before others (and others perhaps not at all, given
7
- missing dependencies). Hence this place-holder imaginatively named 'z.rb', to
8
- force this message.
9
-
10
- A work-around is to use cucumber profiles. You will find the default profile in
11
- cucumber.yml should serve your needs fine, unless you add new step definitions.
12
- When you do that, you can regenerate the YAML file by running:
13
- rake cucumber_defaults
14
-
15
- And then run specific features as follows is slightly more verbose, but it
16
- works, whereas this doesn't.
17
- cucumber -p default features/something.feature
18
- MESSAGE
19
- exit 0
@@ -1,50 +0,0 @@
1
- module ThinkingSphinx
2
- module Deltas
3
- class DatetimeDelta < ThinkingSphinx::Deltas::DefaultDelta
4
- attr_accessor :column, :threshold
5
-
6
- def initialize(index, options)
7
- @index = index
8
- @column = options.delete(:delta_column) || :updated_at
9
- @threshold = options.delete(:threshold) || 1.day
10
- end
11
-
12
- def index(model, instance = nil)
13
- # do nothing
14
- true
15
- end
16
-
17
- def delayed_index(model)
18
- config = ThinkingSphinx::Configuration.instance
19
- rotate = ThinkingSphinx.sphinx_running? ? "--rotate" : ""
20
-
21
- output = `#{config.bin_path}#{config.indexer_binary_name} --config #{config.config_file} #{rotate} #{delta_index_name model}`
22
- output += `#{config.bin_path}#{config.indexer_binary_name} --config #{config.config_file} #{rotate} --merge #{core_index_name model} #{delta_index_name model} --merge-dst-range sphinx_deleted 0 0`
23
- puts output unless ThinkingSphinx.suppress_delta_output?
24
-
25
- true
26
- end
27
-
28
- def toggle(instance)
29
- # do nothing
30
- end
31
-
32
- def toggled(instance)
33
- instance.send(@column) > @threshold.ago
34
- end
35
-
36
- def reset_query(model)
37
- nil
38
- end
39
-
40
- def clause(model, toggled)
41
- if toggled
42
- "#{model.quoted_table_name}.#{model.connection.quote_column_name(@column.to_s)}" +
43
- " > #{adapter.time_difference(@threshold)}"
44
- else
45
- nil
46
- end
47
- end
48
- end
49
- end
50
- end
@@ -1,30 +0,0 @@
1
- require 'delayed/job'
2
-
3
- require 'thinking_sphinx/deltas/delayed_delta/delta_job'
4
- require 'thinking_sphinx/deltas/delayed_delta/flag_as_deleted_job'
5
- require 'thinking_sphinx/deltas/delayed_delta/job'
6
-
7
- module ThinkingSphinx
8
- module Deltas
9
- class DelayedDelta < ThinkingSphinx::Deltas::DefaultDelta
10
- def index(model, instance = nil)
11
- return true unless ThinkingSphinx.updates_enabled? && ThinkingSphinx.deltas_enabled?
12
- return true if instance && !toggled(instance)
13
-
14
- ThinkingSphinx::Deltas::Job.enqueue(
15
- ThinkingSphinx::Deltas::DeltaJob.new(delta_index_name(model)),
16
- ThinkingSphinx::Configuration.instance.delayed_job_priority
17
- )
18
-
19
- Delayed::Job.enqueue(
20
- ThinkingSphinx::Deltas::FlagAsDeletedJob.new(
21
- core_index_name(model), instance.sphinx_document_id
22
- ),
23
- ThinkingSphinx::Configuration.instance.delayed_job_priority
24
- ) if instance
25
-
26
- true
27
- end
28
- end
29
- end
30
- end
@@ -1,24 +0,0 @@
1
- module ThinkingSphinx
2
- module Deltas
3
- class DeltaJob
4
- attr_accessor :index
5
-
6
- def initialize(index)
7
- @index = index
8
- end
9
-
10
- def perform
11
- return true unless ThinkingSphinx.updates_enabled? &&
12
- ThinkingSphinx.deltas_enabled?
13
-
14
- config = ThinkingSphinx::Configuration.instance
15
- client = Riddle::Client.new config.address, config.port
16
-
17
- output = `#{config.bin_path}#{config.indexer_binary_name} --config #{config.config_file} --rotate #{index}`
18
- puts output unless ThinkingSphinx.suppress_delta_output?
19
-
20
- true
21
- end
22
- end
23
- end
24
- end