thinking-sphinx 3.1.4 → 3.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +7 -2
  3. data/Appraisals +4 -4
  4. data/Gemfile +2 -0
  5. data/HISTORY +24 -0
  6. data/README.textile +5 -4
  7. data/gemfiles/rails_3_2.gemfile +2 -1
  8. data/gemfiles/rails_4_0.gemfile +2 -1
  9. data/gemfiles/rails_4_1.gemfile +2 -1
  10. data/gemfiles/rails_4_2.gemfile +2 -1
  11. data/lib/thinking_sphinx.rb +4 -1
  12. data/lib/thinking_sphinx/active_record.rb +1 -0
  13. data/lib/thinking_sphinx/active_record/association_proxy/attribute_finder.rb +1 -1
  14. data/lib/thinking_sphinx/active_record/attribute/type.rb +1 -1
  15. data/lib/thinking_sphinx/active_record/base.rb +1 -1
  16. data/lib/thinking_sphinx/active_record/callbacks/delete_callbacks.rb +1 -1
  17. data/lib/thinking_sphinx/active_record/callbacks/delta_callbacks.rb +7 -3
  18. data/lib/thinking_sphinx/active_record/callbacks/update_callbacks.rb +2 -2
  19. data/lib/thinking_sphinx/active_record/column_sql_presenter.rb +5 -1
  20. data/lib/thinking_sphinx/active_record/index.rb +4 -4
  21. data/lib/thinking_sphinx/active_record/source_joins.rb +55 -0
  22. data/lib/thinking_sphinx/active_record/sql_builder.rb +3 -18
  23. data/lib/thinking_sphinx/active_record/sql_builder/query.rb +7 -0
  24. data/lib/thinking_sphinx/active_record/sql_source.rb +7 -5
  25. data/lib/thinking_sphinx/active_record/sql_source/template.rb +1 -1
  26. data/lib/thinking_sphinx/callbacks.rb +18 -0
  27. data/lib/thinking_sphinx/configuration.rb +50 -33
  28. data/lib/thinking_sphinx/configuration/duplicate_names.rb +34 -0
  29. data/lib/thinking_sphinx/connection.rb +4 -4
  30. data/lib/thinking_sphinx/controller.rb +6 -4
  31. data/lib/thinking_sphinx/deletion.rb +13 -0
  32. data/lib/thinking_sphinx/errors.rb +8 -0
  33. data/lib/thinking_sphinx/index_set.rb +6 -1
  34. data/lib/thinking_sphinx/indexing_strategies/all_at_once.rb +7 -0
  35. data/lib/thinking_sphinx/indexing_strategies/one_at_a_time.rb +14 -0
  36. data/lib/thinking_sphinx/middlewares/active_record_translator.rb +1 -1
  37. data/lib/thinking_sphinx/middlewares/inquirer.rb +1 -1
  38. data/lib/thinking_sphinx/middlewares/sphinxql.rb +2 -2
  39. data/lib/thinking_sphinx/middlewares/stale_id_checker.rb +1 -1
  40. data/lib/thinking_sphinx/middlewares/stale_id_filter.rb +2 -2
  41. data/lib/thinking_sphinx/rake_interface.rb +14 -5
  42. data/lib/thinking_sphinx/real_time.rb +1 -0
  43. data/lib/thinking_sphinx/real_time/attribute.rb +7 -1
  44. data/lib/thinking_sphinx/real_time/index.rb +2 -0
  45. data/lib/thinking_sphinx/real_time/populator.rb +3 -3
  46. data/lib/thinking_sphinx/real_time/property.rb +1 -5
  47. data/lib/thinking_sphinx/real_time/transcriber.rb +44 -9
  48. data/lib/thinking_sphinx/real_time/translator.rb +36 -0
  49. data/lib/thinking_sphinx/search.rb +10 -0
  50. data/lib/thinking_sphinx/search/context.rb +8 -0
  51. data/lib/thinking_sphinx/search/stale_ids_exception.rb +3 -2
  52. data/lib/thinking_sphinx/subscribers/populator_subscriber.rb +1 -1
  53. data/lib/thinking_sphinx/tasks.rb +3 -1
  54. data/spec/acceptance/remove_deleted_records_spec.rb +18 -0
  55. data/spec/acceptance/searching_with_filters_spec.rb +13 -0
  56. data/spec/internal/app/indices/product_index.rb +1 -0
  57. data/spec/internal/db/schema.rb +1 -0
  58. data/spec/spec_helper.rb +1 -0
  59. data/spec/support/json_column.rb +29 -0
  60. data/spec/thinking_sphinx/active_record/callbacks/delete_callbacks_spec.rb +10 -0
  61. data/spec/thinking_sphinx/active_record/callbacks/update_callbacks_spec.rb +10 -0
  62. data/spec/thinking_sphinx/active_record/column_sql_presenter_spec.rb +37 -0
  63. data/spec/thinking_sphinx/active_record/sql_builder_spec.rb +7 -17
  64. data/spec/thinking_sphinx/active_record/sql_source_spec.rb +43 -15
  65. data/spec/thinking_sphinx/errors_spec.rb +7 -0
  66. data/spec/thinking_sphinx/middlewares/active_record_translator_spec.rb +15 -1
  67. data/spec/thinking_sphinx/middlewares/stale_id_checker_spec.rb +1 -0
  68. data/spec/thinking_sphinx/middlewares/stale_id_filter_spec.rb +26 -6
  69. data/spec/thinking_sphinx/real_time/callbacks/real_time_callbacks_spec.rb +4 -4
  70. data/spec/thinking_sphinx_spec.rb +2 -1
  71. data/thinking-sphinx.gemspec +1 -1
  72. metadata +12 -3
@@ -9,7 +9,7 @@ describe ThinkingSphinx::ActiveRecord::SQLSource do
9
9
  let(:db_config) { {:host => 'localhost', :user => 'root',
10
10
  :database => 'default'} }
11
11
  let(:source) { ThinkingSphinx::ActiveRecord::SQLSource.new(model,
12
- :position => 3) }
12
+ :position => 3, :primary_key => model.primary_key || :id ) }
13
13
  let(:adapter) { double('adapter') }
14
14
 
15
15
  before :each do
@@ -53,12 +53,14 @@ describe ThinkingSphinx::ActiveRecord::SQLSource do
53
53
  let(:processor) { double('processor') }
54
54
  let(:source) {
55
55
  ThinkingSphinx::ActiveRecord::SQLSource.new model,
56
- :delta_processor => processor_class
56
+ :delta_processor => processor_class,
57
+ :primary_key => model.primary_key || :id
57
58
  }
58
59
  let(:source_with_options) {
59
60
  ThinkingSphinx::ActiveRecord::SQLSource.new model,
60
61
  :delta_processor => processor_class,
61
- :delta_options => { :opt_key => :opt_value }
62
+ :delta_options => { :opt_key => :opt_value },
63
+ :primary_key => model.primary_key || :id
62
64
  }
63
65
 
64
66
  it "loads the processor with the adapter" do
@@ -81,7 +83,8 @@ describe ThinkingSphinx::ActiveRecord::SQLSource do
81
83
  describe '#delta?' do
82
84
  it "returns the given delta setting" do
83
85
  source = ThinkingSphinx::ActiveRecord::SQLSource.new model,
84
- :delta? => true
86
+ :delta? => true,
87
+ :primary_key => model.primary_key || :id
85
88
 
86
89
  source.should be_a_delta
87
90
  end
@@ -90,7 +93,8 @@ describe ThinkingSphinx::ActiveRecord::SQLSource do
90
93
  describe '#disable_range?' do
91
94
  it "returns the given range setting" do
92
95
  source = ThinkingSphinx::ActiveRecord::SQLSource.new model,
93
- :disable_range? => true
96
+ :disable_range? => true,
97
+ :primary_key => model.primary_key || :id
94
98
 
95
99
  source.disable_range?.should be_true
96
100
  end
@@ -129,7 +133,7 @@ describe ThinkingSphinx::ActiveRecord::SQLSource do
129
133
 
130
134
  it "allows for custom names, but adds the position suffix" do
131
135
  source = ThinkingSphinx::ActiveRecord::SQLSource.new model,
132
- :name => 'people', :position => 2
136
+ :name => 'people', :position => 2, :primary_key => model.primary_key || :id
133
137
 
134
138
  source.name.should == 'people_2'
135
139
  end
@@ -137,7 +141,8 @@ describe ThinkingSphinx::ActiveRecord::SQLSource do
137
141
 
138
142
  describe '#offset' do
139
143
  it "returns the given offset" do
140
- source = ThinkingSphinx::ActiveRecord::SQLSource.new model, :offset => 12
144
+ source = ThinkingSphinx::ActiveRecord::SQLSource.new model,
145
+ :offset => 12, :primary_key => model.primary_key || :id
141
146
 
142
147
  source.offset.should == 12
143
148
  end
@@ -153,6 +158,19 @@ describe ThinkingSphinx::ActiveRecord::SQLSource do
153
158
 
154
159
  source.options[:utf8?].should be_true
155
160
  end
161
+
162
+ describe "#primary key" do
163
+ let(:model) { double('model', :connection => connection,
164
+ :name => 'User', :column_names => [], :inheritance_column => 'type') }
165
+ let(:source) { ThinkingSphinx::ActiveRecord::SQLSource.new(model,
166
+ :position => 3, :primary_key => :custom_key) }
167
+ let(:template) { ThinkingSphinx::ActiveRecord::SQLSource::Template.new(source) }
168
+
169
+ it 'template should allow primary key from options' do
170
+ template.apply
171
+ template.source.attributes.collect(&:columns) == :custom_key
172
+ end
173
+ end
156
174
  end
157
175
 
158
176
  describe '#render' do
@@ -194,14 +212,6 @@ describe ThinkingSphinx::ActiveRecord::SQLSource do
194
212
  source.sql_query_pre.should == ['Change Setting']
195
213
  end
196
214
 
197
- it "appends the builder's sql_query_post_index value" do
198
- builder.stub! :sql_query_post_index => ['RESET DELTAS']
199
-
200
- source.render
201
-
202
- source.sql_query_post_index.should include('RESET DELTAS')
203
- end
204
-
205
215
  it "adds fields with attributes to sql_field_string" do
206
216
  source.fields << double('field', :name => 'title', :source_type => nil,
207
217
  :with_attribute? => true, :file? => false, :wordcount? => false)
@@ -398,6 +408,24 @@ describe ThinkingSphinx::ActiveRecord::SQLSource do
398
408
 
399
409
  source.sql_sock.should == '/unix/socket'
400
410
  end
411
+
412
+ it "sets the mysql_ssl_cert from the model's database settings" do
413
+ source.set_database_settings :sslcert => '/path/to/cert.pem'
414
+
415
+ source.mysql_ssl_cert.should eq '/path/to/cert.pem'
416
+ end
417
+
418
+ it "sets the mysql_ssl_key from the model's database settings" do
419
+ source.set_database_settings :sslkey => '/path/to/key.pem'
420
+
421
+ source.mysql_ssl_key.should eq '/path/to/key.pem'
422
+ end
423
+
424
+ it "sets the mysql_ssl_ca from the model's database settings" do
425
+ source.set_database_settings :sslca => '/path/to/ca.pem'
426
+
427
+ source.mysql_ssl_ca.should eq '/path/to/ca.pem'
428
+ end
401
429
  end
402
430
 
403
431
  describe '#type' do
@@ -33,6 +33,13 @@ describe ThinkingSphinx::SphinxError do
33
33
  should be_a(ThinkingSphinx::ConnectionError)
34
34
  end
35
35
 
36
+ it 'translates out-of-bounds errors' do
37
+ error.stub :message => "offset out of bounds (offset=1001, max_matches=1000)"
38
+
39
+ ThinkingSphinx::SphinxError.new_from_mysql(error).
40
+ should be_a(ThinkingSphinx::OutOfBoundsError)
41
+ end
42
+
36
43
  it 'prefixes the connection error message' do
37
44
  error.stub :message => "Can't connect to MySQL server on '127.0.0.1' (61)"
38
45
 
@@ -11,9 +11,10 @@ describe ThinkingSphinx::Middlewares::ActiveRecordTranslator do
11
11
  let(:app) { double('app', :call => true) }
12
12
  let(:middleware) {
13
13
  ThinkingSphinx::Middlewares::ActiveRecordTranslator.new app }
14
- let(:context) { {:raw => [], :results => []} }
14
+ let(:context) { {:raw => [], :results => [] } }
15
15
  let(:model) { double('model', :primary_key => :id) }
16
16
  let(:search) { double('search', :options => {}) }
17
+ let(:configuration) { double('configuration', :settings => {:primary_key => :id}) }
17
18
 
18
19
  def raw_result(id, model_name)
19
20
  {'sphinx_internal_id' => id, 'sphinx_internal_class' => model_name}
@@ -22,6 +23,7 @@ describe ThinkingSphinx::Middlewares::ActiveRecordTranslator do
22
23
  describe '#call' do
23
24
  before :each do
24
25
  context.stub :search => search
26
+ context.stub :configuration => configuration
25
27
  model.stub :unscoped => model
26
28
  end
27
29
 
@@ -101,6 +103,18 @@ describe ThinkingSphinx::Middlewares::ActiveRecordTranslator do
101
103
  context[:results].should == [instance_1, instance_2]
102
104
  end
103
105
 
106
+ it "handles model without primary key" do
107
+ no_primary_key_model = double('no primary key model')
108
+ no_primary_key_model.stub :unscoped => no_primary_key_model
109
+ model_name = double('article', :constantize => no_primary_key_model)
110
+ instance = double('instance', :id => 1)
111
+ no_primary_key_model.stub :where => [instance]
112
+
113
+ context[:results] << raw_result(1, model_name)
114
+
115
+ middleware.call [context]
116
+ end
117
+
104
118
  context 'SQL options' do
105
119
  let(:relation) { double('relation', :where => []) }
106
120
 
@@ -41,6 +41,7 @@ describe ThinkingSphinx::Middlewares::StaleIdChecker do
41
41
  middleware.call [context]
42
42
  }.should raise_error(ThinkingSphinx::Search::StaleIdsException) { |err|
43
43
  err.ids.should == [42]
44
+ err.context.should == context
44
45
  }
45
46
  end
46
47
  end
@@ -23,7 +23,7 @@ describe ThinkingSphinx::Middlewares::StaleIdFilter do
23
23
  app.stub(:call) do
24
24
  @calls ||= 0
25
25
  @calls += 1
26
- raise ThinkingSphinx::Search::StaleIdsException, [12] if @calls == 1
26
+ raise ThinkingSphinx::Search::StaleIdsException.new([12], context) if @calls == 1
27
27
  end
28
28
  end
29
29
 
@@ -47,8 +47,8 @@ describe ThinkingSphinx::Middlewares::StaleIdFilter do
47
47
  app.stub(:call) do
48
48
  @calls ||= 0
49
49
  @calls += 1
50
- raise ThinkingSphinx::Search::StaleIdsException, [12] if @calls == 1
51
- raise ThinkingSphinx::Search::StaleIdsException, [13] if @calls == 2
50
+ raise ThinkingSphinx::Search::StaleIdsException.new([12], context) if @calls == 1
51
+ raise ThinkingSphinx::Search::StaleIdsException.new([13], context) if @calls == 2
52
52
  end
53
53
  end
54
54
 
@@ -73,9 +73,9 @@ describe ThinkingSphinx::Middlewares::StaleIdFilter do
73
73
  @calls ||= 0
74
74
  @calls += 1
75
75
 
76
- raise ThinkingSphinx::Search::StaleIdsException, [12] if @calls == 1
77
- raise ThinkingSphinx::Search::StaleIdsException, [13] if @calls == 2
78
- raise ThinkingSphinx::Search::StaleIdsException, [14] if @calls == 3
76
+ raise ThinkingSphinx::Search::StaleIdsException.new([12], context) if @calls == 1
77
+ raise ThinkingSphinx::Search::StaleIdsException.new([13], context) if @calls == 2
78
+ raise ThinkingSphinx::Search::StaleIdsException.new([14], context) if @calls == 3
79
79
  end
80
80
  end
81
81
 
@@ -87,5 +87,25 @@ describe ThinkingSphinx::Middlewares::StaleIdFilter do
87
87
  }
88
88
  end
89
89
  end
90
+
91
+ context 'stale ids exceptions with multiple contexts' do
92
+ let(:context2) { {:raw => [], :results => []} }
93
+ let(:search2) { double('search2', :options => {}) }
94
+ before :each do
95
+ context2.stub :search => search2
96
+ app.stub(:call) do
97
+ @calls ||= 0
98
+ @calls += 1
99
+ raise ThinkingSphinx::Search::StaleIdsException.new([12], context2) if @calls == 1
100
+ end
101
+ end
102
+
103
+ it "appends the ids to the without_ids filter in the correct context" do
104
+ middleware.call [context, context2]
105
+ search.options[:without_ids].should == nil
106
+ search2.options[:without_ids].should == [12]
107
+ end
108
+ end
109
+
90
110
  end
91
111
  end
@@ -33,7 +33,7 @@ describe ThinkingSphinx::RealTime::Callbacks::RealTimeCallbacks do
33
33
 
34
34
  it "creates an insert statement with all fields and attributes" do
35
35
  Riddle::Query::Insert.should_receive(:new).
36
- with('my_index', ['id', 'name', 'created_at'], [123, 'Foo', time]).
36
+ with('my_index', ['id', 'name', 'created_at'], [[123, 'Foo', time]]).
37
37
  and_return(insert)
38
38
 
39
39
  callbacks.after_save instance
@@ -62,7 +62,7 @@ describe ThinkingSphinx::RealTime::Callbacks::RealTimeCallbacks do
62
62
 
63
63
  it "creates an insert statement with all fields and attributes" do
64
64
  Riddle::Query::Insert.should_receive(:new).
65
- with('my_index', ['id', 'name', 'created_at'], [123, 'Foo', time]).
65
+ with('my_index', ['id', 'name', 'created_at'], [[123, 'Foo', time]]).
66
66
  and_return(insert)
67
67
 
68
68
  callbacks.after_save instance
@@ -94,7 +94,7 @@ describe ThinkingSphinx::RealTime::Callbacks::RealTimeCallbacks do
94
94
 
95
95
  it "creates insert statements with all fields and attributes" do
96
96
  Riddle::Query::Insert.should_receive(:new).twice.
97
- with('my_index', ['id', 'name', 'created_at'], [123, 'Foo', time]).
97
+ with('my_index', ['id', 'name', 'created_at'], [[123, 'Foo', time]]).
98
98
  and_return(insert)
99
99
 
100
100
  callbacks.after_save instance
@@ -128,7 +128,7 @@ describe ThinkingSphinx::RealTime::Callbacks::RealTimeCallbacks do
128
128
 
129
129
  it "creates insert statements with all fields and attributes" do
130
130
  Riddle::Query::Insert.should_receive(:new).twice.
131
- with('my_index', ['id', 'name', 'created_at'], [123, 'Foo', time]).
131
+ with('my_index', ['id', 'name', 'created_at'], [[123, 'Foo', time]]).
132
132
  and_return(insert)
133
133
 
134
134
  callbacks.after_save instance
@@ -2,7 +2,8 @@ require 'spec_helper'
2
2
 
3
3
  describe ThinkingSphinx do
4
4
  describe '.count' do
5
- let(:search) { double('search', :total_entries => 23) }
5
+ let(:search) { double('search', :total_entries => 23, :populated? => false,
6
+ :options => {}) }
6
7
 
7
8
  before :each do
8
9
  ThinkingSphinx::Search.stub :new => search
@@ -3,7 +3,7 @@ $:.push File.expand_path('../lib', __FILE__)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = 'thinking-sphinx'
6
- s.version = '3.1.4'
6
+ s.version = '3.2.0'
7
7
  s.platform = Gem::Platform::RUBY
8
8
  s.authors = ["Pat Allan"]
9
9
  s.email = ["pat@freelancing-gods.com"]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: thinking-sphinx
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.4
4
+ version: 3.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pat Allan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-01 00:00:00.000000000 Z
11
+ date: 2016-05-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -204,6 +204,7 @@ files:
204
204
  - lib/thinking_sphinx/active_record/property_query.rb
205
205
  - lib/thinking_sphinx/active_record/property_sql_presenter.rb
206
206
  - lib/thinking_sphinx/active_record/simple_many_query.rb
207
+ - lib/thinking_sphinx/active_record/source_joins.rb
207
208
  - lib/thinking_sphinx/active_record/sql_builder.rb
208
209
  - lib/thinking_sphinx/active_record/sql_builder/clause_builder.rb
209
210
  - lib/thinking_sphinx/active_record/sql_builder/query.rb
@@ -219,6 +220,7 @@ files:
219
220
  - lib/thinking_sphinx/configuration/consistent_ids.rb
220
221
  - lib/thinking_sphinx/configuration/defaults.rb
221
222
  - lib/thinking_sphinx/configuration/distributed_indices.rb
223
+ - lib/thinking_sphinx/configuration/duplicate_names.rb
222
224
  - lib/thinking_sphinx/configuration/minimum_fields.rb
223
225
  - lib/thinking_sphinx/connection.rb
224
226
  - lib/thinking_sphinx/controller.rb
@@ -248,6 +250,8 @@ files:
248
250
  - lib/thinking_sphinx/guard/files.rb
249
251
  - lib/thinking_sphinx/index.rb
250
252
  - lib/thinking_sphinx/index_set.rb
253
+ - lib/thinking_sphinx/indexing_strategies/all_at_once.rb
254
+ - lib/thinking_sphinx/indexing_strategies/one_at_a_time.rb
251
255
  - lib/thinking_sphinx/logger.rb
252
256
  - lib/thinking_sphinx/masks.rb
253
257
  - lib/thinking_sphinx/masks/group_enumerators_mask.rb
@@ -283,6 +287,7 @@ files:
283
287
  - lib/thinking_sphinx/real_time/populator.rb
284
288
  - lib/thinking_sphinx/real_time/property.rb
285
289
  - lib/thinking_sphinx/real_time/transcriber.rb
290
+ - lib/thinking_sphinx/real_time/translator.rb
286
291
  - lib/thinking_sphinx/scopes.rb
287
292
  - lib/thinking_sphinx/search.rb
288
293
  - lib/thinking_sphinx/search/batch_inquirer.rb
@@ -366,6 +371,7 @@ files:
366
371
  - spec/internal/db/schema.rb
367
372
  - spec/internal/tmp/.gitkeep
368
373
  - spec/spec_helper.rb
374
+ - spec/support/json_column.rb
369
375
  - spec/support/multi_schema.rb
370
376
  - spec/support/sphinx_yaml_helpers.rb
371
377
  - spec/thinking_sphinx/active_record/association_spec.rb
@@ -375,6 +381,7 @@ files:
375
381
  - spec/thinking_sphinx/active_record/callbacks/delta_callbacks_spec.rb
376
382
  - spec/thinking_sphinx/active_record/callbacks/update_callbacks_spec.rb
377
383
  - spec/thinking_sphinx/active_record/column_spec.rb
384
+ - spec/thinking_sphinx/active_record/column_sql_presenter_spec.rb
378
385
  - spec/thinking_sphinx/active_record/database_adapters/abstract_adapter_spec.rb
379
386
  - spec/thinking_sphinx/active_record/database_adapters/mysql_adapter_spec.rb
380
387
  - spec/thinking_sphinx/active_record/database_adapters/postgresql_adapter_spec.rb
@@ -443,7 +450,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
443
450
  version: '0'
444
451
  requirements: []
445
452
  rubyforge_project: thinking-sphinx
446
- rubygems_version: 2.2.2
453
+ rubygems_version: 2.4.8
447
454
  signing_key:
448
455
  specification_version: 4
449
456
  summary: A smart wrapper over Sphinx for ActiveRecord
@@ -516,6 +523,7 @@ test_files:
516
523
  - spec/internal/db/schema.rb
517
524
  - spec/internal/tmp/.gitkeep
518
525
  - spec/spec_helper.rb
526
+ - spec/support/json_column.rb
519
527
  - spec/support/multi_schema.rb
520
528
  - spec/support/sphinx_yaml_helpers.rb
521
529
  - spec/thinking_sphinx/active_record/association_spec.rb
@@ -525,6 +533,7 @@ test_files:
525
533
  - spec/thinking_sphinx/active_record/callbacks/delta_callbacks_spec.rb
526
534
  - spec/thinking_sphinx/active_record/callbacks/update_callbacks_spec.rb
527
535
  - spec/thinking_sphinx/active_record/column_spec.rb
536
+ - spec/thinking_sphinx/active_record/column_sql_presenter_spec.rb
528
537
  - spec/thinking_sphinx/active_record/database_adapters/abstract_adapter_spec.rb
529
538
  - spec/thinking_sphinx/active_record/database_adapters/mysql_adapter_spec.rb
530
539
  - spec/thinking_sphinx/active_record/database_adapters/postgresql_adapter_spec.rb