thinking-sphinx 3.2.0 → 3.3.0

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.
Files changed (124) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +6 -2
  3. data/Appraisals +13 -0
  4. data/Gemfile +2 -1
  5. data/HISTORY +19 -0
  6. data/README.textile +3 -2
  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/gemfiles/rails_5_0.gemfile +12 -0
  12. data/lib/thinking_sphinx.rb +2 -0
  13. data/lib/thinking_sphinx/active_record/attribute/type.rb +17 -3
  14. data/lib/thinking_sphinx/active_record/callbacks/delta_callbacks.rb +12 -4
  15. data/lib/thinking_sphinx/active_record/database_adapters.rb +1 -1
  16. data/lib/thinking_sphinx/active_record/sql_builder/query.rb +4 -0
  17. data/lib/thinking_sphinx/active_record/sql_source.rb +1 -1
  18. data/lib/thinking_sphinx/configuration.rb +3 -2
  19. data/lib/thinking_sphinx/connection.rb +23 -10
  20. data/lib/thinking_sphinx/deltas/index_job.rb +6 -2
  21. data/lib/thinking_sphinx/errors.rb +25 -0
  22. data/lib/thinking_sphinx/middlewares/active_record_translator.rb +14 -2
  23. data/lib/thinking_sphinx/railtie.rb +1 -1
  24. data/lib/thinking_sphinx/rake_interface.rb +71 -23
  25. data/lib/thinking_sphinx/real_time/callbacks/real_time_callbacks.rb +15 -7
  26. data/lib/thinking_sphinx/real_time/populator.rb +3 -3
  27. data/lib/thinking_sphinx/tasks.rb +7 -8
  28. data/lib/thinking_sphinx/wildcard.rb +1 -1
  29. data/spec/acceptance/association_scoping_spec.rb +5 -5
  30. data/spec/acceptance/attribute_access_spec.rb +4 -4
  31. data/spec/acceptance/attribute_updates_spec.rb +3 -3
  32. data/spec/acceptance/batch_searching_spec.rb +4 -4
  33. data/spec/acceptance/big_integers_spec.rb +6 -6
  34. data/spec/acceptance/connection_spec.rb +23 -0
  35. data/spec/acceptance/excerpts_spec.rb +8 -8
  36. data/spec/acceptance/facets_spec.rb +13 -13
  37. data/spec/acceptance/geosearching_spec.rb +8 -8
  38. data/spec/acceptance/grouping_by_attributes_spec.rb +10 -10
  39. data/spec/acceptance/index_options_spec.rb +16 -16
  40. data/spec/acceptance/indexing_spec.rb +3 -3
  41. data/spec/acceptance/paginating_search_results_spec.rb +3 -3
  42. data/spec/acceptance/real_time_updates_spec.rb +4 -4
  43. data/spec/acceptance/remove_deleted_records_spec.rb +12 -12
  44. data/spec/acceptance/search_counts_spec.rb +2 -2
  45. data/spec/acceptance/search_for_just_ids_spec.rb +2 -2
  46. data/spec/acceptance/searching_across_models_spec.rb +6 -6
  47. data/spec/acceptance/searching_across_schemas_spec.rb +10 -10
  48. data/spec/acceptance/searching_on_fields_spec.rb +9 -9
  49. data/spec/acceptance/searching_with_filters_spec.rb +16 -16
  50. data/spec/acceptance/searching_with_sti_spec.rb +9 -9
  51. data/spec/acceptance/searching_within_a_model_spec.rb +17 -17
  52. data/spec/acceptance/sorting_search_results_spec.rb +6 -6
  53. data/spec/acceptance/specifying_sql_spec.rb +62 -62
  54. data/spec/acceptance/sphinx_scopes_spec.rb +9 -9
  55. data/spec/acceptance/sql_deltas_spec.rb +7 -7
  56. data/spec/acceptance/support/database_cleaner.rb +1 -1
  57. data/spec/acceptance/support/sphinx_controller.rb +4 -1
  58. data/spec/acceptance/support/sphinx_helpers.rb +4 -0
  59. data/spec/acceptance/suspended_deltas_spec.rb +9 -9
  60. data/spec/internal/app/indices/article_index.rb +2 -2
  61. data/spec/internal/app/indices/book_index.rb +2 -1
  62. data/spec/internal/app/indices/product_index.rb +0 -2
  63. data/spec/internal/app/models/categorisation.rb +8 -1
  64. data/spec/spec_helper.rb +2 -0
  65. data/spec/support/json_column.rb +5 -1
  66. data/spec/support/multi_schema.rb +3 -1
  67. data/spec/support/sphinx_yaml_helpers.rb +1 -1
  68. data/spec/thinking_sphinx/active_record/association_spec.rb +1 -1
  69. data/spec/thinking_sphinx/active_record/attribute/type_spec.rb +41 -38
  70. data/spec/thinking_sphinx/active_record/base_spec.rb +29 -29
  71. data/spec/thinking_sphinx/active_record/callbacks/delete_callbacks_spec.rb +10 -10
  72. data/spec/thinking_sphinx/active_record/callbacks/delta_callbacks_spec.rb +48 -25
  73. data/spec/thinking_sphinx/active_record/callbacks/update_callbacks_spec.rb +8 -8
  74. data/spec/thinking_sphinx/active_record/column_spec.rb +13 -13
  75. data/spec/thinking_sphinx/active_record/column_sql_presenter_spec.rb +5 -5
  76. data/spec/thinking_sphinx/active_record/database_adapters/abstract_adapter_spec.rb +5 -5
  77. data/spec/thinking_sphinx/active_record/database_adapters/mysql_adapter_spec.rb +11 -11
  78. data/spec/thinking_sphinx/active_record/database_adapters/postgresql_adapter_spec.rb +13 -13
  79. data/spec/thinking_sphinx/active_record/database_adapters_spec.rb +48 -48
  80. data/spec/thinking_sphinx/active_record/field_spec.rb +7 -7
  81. data/spec/thinking_sphinx/active_record/filter_reflection_spec.rb +32 -32
  82. data/spec/thinking_sphinx/active_record/index_spec.rb +35 -36
  83. data/spec/thinking_sphinx/active_record/interpreter_spec.rb +51 -51
  84. data/spec/thinking_sphinx/active_record/polymorpher_spec.rb +14 -14
  85. data/spec/thinking_sphinx/active_record/property_sql_presenter_spec.rb +67 -67
  86. data/spec/thinking_sphinx/active_record/sql_builder_spec.rb +140 -140
  87. data/spec/thinking_sphinx/active_record/sql_source_spec.rb +97 -95
  88. data/spec/thinking_sphinx/configuration_spec.rb +81 -81
  89. data/spec/thinking_sphinx/connection_spec.rb +13 -13
  90. data/spec/thinking_sphinx/deletion_spec.rb +11 -11
  91. data/spec/thinking_sphinx/deltas/default_delta_spec.rb +20 -20
  92. data/spec/thinking_sphinx/deltas_spec.rb +12 -12
  93. data/spec/thinking_sphinx/errors_spec.rb +30 -30
  94. data/spec/thinking_sphinx/excerpter_spec.rb +7 -7
  95. data/spec/thinking_sphinx/facet_search_spec.rb +16 -16
  96. data/spec/thinking_sphinx/index_set_spec.rb +7 -7
  97. data/spec/thinking_sphinx/index_spec.rb +24 -24
  98. data/spec/thinking_sphinx/masks/pagination_mask_spec.rb +20 -20
  99. data/spec/thinking_sphinx/masks/scopes_mask_spec.rb +18 -18
  100. data/spec/thinking_sphinx/middlewares/active_record_translator_spec.rb +22 -22
  101. data/spec/thinking_sphinx/middlewares/geographer_spec.rb +9 -9
  102. data/spec/thinking_sphinx/middlewares/glazier_spec.rb +4 -4
  103. data/spec/thinking_sphinx/middlewares/inquirer_spec.rb +7 -7
  104. data/spec/thinking_sphinx/middlewares/sphinxql_spec.rb +53 -53
  105. data/spec/thinking_sphinx/middlewares/stale_id_checker_spec.rb +5 -5
  106. data/spec/thinking_sphinx/middlewares/stale_id_filter_spec.rb +15 -15
  107. data/spec/thinking_sphinx/panes/attributes_pane_spec.rb +1 -1
  108. data/spec/thinking_sphinx/panes/distance_pane_spec.rb +4 -4
  109. data/spec/thinking_sphinx/panes/excerpts_pane_spec.rb +5 -5
  110. data/spec/thinking_sphinx/panes/weight_pane_spec.rb +1 -1
  111. data/spec/thinking_sphinx/rake_interface_spec.rb +66 -53
  112. data/spec/thinking_sphinx/real_time/attribute_spec.rb +13 -13
  113. data/spec/thinking_sphinx/real_time/callbacks/real_time_callbacks_spec.rb +107 -23
  114. data/spec/thinking_sphinx/real_time/field_spec.rb +14 -14
  115. data/spec/thinking_sphinx/real_time/index_spec.rb +29 -30
  116. data/spec/thinking_sphinx/real_time/interpreter_spec.rb +30 -30
  117. data/spec/thinking_sphinx/scopes_spec.rb +5 -5
  118. data/spec/thinking_sphinx/search/glaze_spec.rb +15 -15
  119. data/spec/thinking_sphinx/search/query_spec.rb +10 -10
  120. data/spec/thinking_sphinx/search_spec.rb +28 -28
  121. data/spec/thinking_sphinx/wildcard_spec.rb +16 -11
  122. data/spec/thinking_sphinx_spec.rb +6 -6
  123. data/thinking-sphinx.gemspec +4 -4
  124. metadata +12 -9
@@ -9,14 +9,14 @@ describe ThinkingSphinx::Configuration do
9
9
 
10
10
  describe '.instance' do
11
11
  it "returns an instance of ThinkingSphinx::Configuration" do
12
- ThinkingSphinx::Configuration.instance.
13
- should be_a(ThinkingSphinx::Configuration)
12
+ expect(ThinkingSphinx::Configuration.instance).
13
+ to be_a(ThinkingSphinx::Configuration)
14
14
  end
15
15
 
16
16
  it "memoizes the instance" do
17
17
  config = double('configuration')
18
18
 
19
- ThinkingSphinx::Configuration.should_receive(:new).once.and_return(config)
19
+ expect(ThinkingSphinx::Configuration).to receive(:new).once.and_return(config)
20
20
 
21
21
  ThinkingSphinx::Configuration.instance
22
22
  ThinkingSphinx::Configuration.instance
@@ -29,8 +29,8 @@ describe ThinkingSphinx::Configuration do
29
29
  end
30
30
 
31
31
  it 'does not cache settings after reset' do
32
- File.stub :exists? => true
33
- File.stub :read => {
32
+ allow(File).to receive_messages :exists? => true
33
+ allow(File).to receive_messages :read => {
34
34
  'test' => {'foo' => 'bugs'},
35
35
  'production' => {'foo' => 'bar'}
36
36
  }.to_yaml
@@ -38,33 +38,33 @@ describe ThinkingSphinx::Configuration do
38
38
  ThinkingSphinx::Configuration.reset
39
39
  # Grab a new copy of the instance.
40
40
  config = ThinkingSphinx::Configuration.instance
41
- config.settings['foo'].should == 'bugs'
41
+ expect(config.settings['foo']).to eq('bugs')
42
42
 
43
43
  config.framework = double :environment => 'production', :root => Pathname.new(__FILE__).join('..', '..', 'internal')
44
- config.settings['foo'].should == 'bar'
44
+ expect(config.settings['foo']).to eq('bar')
45
45
  end
46
46
  end
47
47
 
48
48
  describe '#configuration_file' do
49
49
  it "uses the Rails environment in the configuration file name" do
50
- config.configuration_file.
51
- should == File.join(Rails.root, 'config', 'test.sphinx.conf')
50
+ expect(config.configuration_file).
51
+ to eq(File.join(Rails.root, 'config', 'test.sphinx.conf'))
52
52
  end
53
53
 
54
54
  it "respects provided settings" do
55
55
  write_configuration 'configuration_file' => '/path/to/foo.conf'
56
56
 
57
- config.configuration_file.should == '/path/to/foo.conf'
57
+ expect(config.configuration_file).to eq('/path/to/foo.conf')
58
58
  end
59
59
  end
60
60
 
61
61
  describe '#controller' do
62
62
  it "returns an instance of Riddle::Controller" do
63
- config.controller.should be_a(Riddle::Controller)
63
+ expect(config.controller).to be_a(Riddle::Controller)
64
64
  end
65
65
 
66
66
  it "memoizes the instance" do
67
- Riddle::Controller.should_receive(:new).once.
67
+ expect(Riddle::Controller).to receive(:new).once.
68
68
  and_return(double('controller'))
69
69
 
70
70
  config.controller
@@ -74,19 +74,19 @@ describe ThinkingSphinx::Configuration do
74
74
  it "sets the bin path from the thinking_sphinx.yml file" do
75
75
  write_configuration('bin_path' => '/foo/bar/bin/')
76
76
 
77
- config.controller.bin_path.should == '/foo/bar/bin/'
77
+ expect(config.controller.bin_path).to eq('/foo/bar/bin/')
78
78
  end
79
79
 
80
80
  it "appends a backslash to the bin_path if appropriate" do
81
81
  write_configuration('bin_path' => '/foo/bar/bin')
82
82
 
83
- config.controller.bin_path.should == '/foo/bar/bin/'
83
+ expect(config.controller.bin_path).to eq('/foo/bar/bin/')
84
84
  end
85
85
  end
86
86
 
87
87
  describe '#index_paths' do
88
88
  it "uses app/indices in the Rails app by default" do
89
- config.index_paths.should include(File.join(Rails.root, 'app', 'indices'))
89
+ expect(config.index_paths).to include(File.join(Rails.root, 'app', 'indices'))
90
90
  end
91
91
 
92
92
  it "uses app/indices in the Rails engines" do
@@ -95,22 +95,22 @@ describe ThinkingSphinx::Configuration do
95
95
  } }
96
96
  engine_class = double :instance => engine
97
97
 
98
- Rails::Engine.should_receive(:subclasses).and_return([ engine_class ])
98
+ expect(Rails::Engine).to receive(:subclasses).and_return([ engine_class ])
99
99
 
100
- config.index_paths.should include('/engine/app/indices')
100
+ expect(config.index_paths).to include('/engine/app/indices')
101
101
  end
102
102
  end
103
103
 
104
104
  describe '#indices_location' do
105
105
  it "stores index files in db/sphinx/ENVIRONMENT" do
106
- config.indices_location.
107
- should == File.join(Rails.root, 'db', 'sphinx', 'test')
106
+ expect(config.indices_location).
107
+ to eq(File.join(Rails.root, 'db', 'sphinx', 'test'))
108
108
  end
109
109
 
110
110
  it "respects provided settings" do
111
111
  write_configuration 'indices_location' => '/my/index/files'
112
112
 
113
- config.indices_location.should == '/my/index/files'
113
+ expect(config.indices_location).to eq('/my/index/files')
114
114
  end
115
115
  end
116
116
 
@@ -120,30 +120,30 @@ describe ThinkingSphinx::Configuration do
120
120
  end
121
121
 
122
122
  it "sets the daemon pid file within log for the Rails app" do
123
- config.searchd.pid_file.
124
- should == File.join(Rails.root, 'log', 'test.sphinx.pid')
123
+ expect(config.searchd.pid_file).
124
+ to eq(File.join(Rails.root, 'log', 'test.sphinx.pid'))
125
125
  end
126
126
 
127
127
  it "sets the daemon log within log for the Rails app" do
128
- config.searchd.log.
129
- should == File.join(Rails.root, 'log', 'test.searchd.log')
128
+ expect(config.searchd.log).
129
+ to eq(File.join(Rails.root, 'log', 'test.searchd.log'))
130
130
  end
131
131
 
132
132
  it "sets the query log within log for the Rails app" do
133
- config.searchd.query_log.
134
- should == File.join(Rails.root, 'log', 'test.searchd.query.log')
133
+ expect(config.searchd.query_log).
134
+ to eq(File.join(Rails.root, 'log', 'test.searchd.query.log'))
135
135
  end
136
136
 
137
137
  it "sets indexer settings if within thinking_sphinx.yml" do
138
138
  write_configuration 'mem_limit' => '128M'
139
139
 
140
- config.indexer.mem_limit.should == '128M'
140
+ expect(config.indexer.mem_limit).to eq('128M')
141
141
  end
142
142
 
143
143
  it "sets searchd settings if within thinking_sphinx.yml" do
144
144
  write_configuration 'workers' => 'none'
145
145
 
146
- config.searchd.workers.should == 'none'
146
+ expect(config.searchd.workers).to eq('none')
147
147
  end
148
148
 
149
149
  it 'adds settings to indexer without common section' do
@@ -164,18 +164,18 @@ describe ThinkingSphinx::Configuration do
164
164
  let(:reference) { double('reference') }
165
165
 
166
166
  it "starts at 0" do
167
- config.next_offset(reference).should == 0
167
+ expect(config.next_offset(reference)).to eq(0)
168
168
  end
169
169
 
170
170
  it "increments for each new reference" do
171
- config.next_offset(double('reference')).should == 0
172
- config.next_offset(double('reference')).should == 1
173
- config.next_offset(double('reference')).should == 2
171
+ expect(config.next_offset(double('reference'))).to eq(0)
172
+ expect(config.next_offset(double('reference'))).to eq(1)
173
+ expect(config.next_offset(double('reference'))).to eq(2)
174
174
  end
175
175
 
176
176
  it "doesn't increment for recorded references" do
177
- config.next_offset(reference).should == 0
178
- config.next_offset(reference).should == 0
177
+ expect(config.next_offset(reference)).to eq(0)
178
+ expect(config.next_offset(reference)).to eq(0)
179
179
  end
180
180
  end
181
181
 
@@ -190,9 +190,9 @@ describe ThinkingSphinx::Configuration do
190
190
  it "searches each index path for ruby files" do
191
191
  config.index_paths.replace ['/path/to/indices', '/path/to/other/indices']
192
192
 
193
- Dir.should_receive(:[]).with('/path/to/indices/**/*.rb').once.
193
+ expect(Dir).to receive(:[]).with('/path/to/indices/**/*.rb').once.
194
194
  and_return([])
195
- Dir.should_receive(:[]).with('/path/to/other/indices/**/*.rb').once.
195
+ expect(Dir).to receive(:[]).with('/path/to/other/indices/**/*.rb').once.
196
196
  and_return([])
197
197
 
198
198
  config.preload_indices
@@ -200,14 +200,14 @@ describe ThinkingSphinx::Configuration do
200
200
 
201
201
  it "loads each file returned" do
202
202
  config.index_paths.replace ['/path/to/indices']
203
- Dir.stub! :[] => [
203
+ allow(Dir).to receive_messages :[] => [
204
204
  '/path/to/indices/foo_index.rb',
205
205
  '/path/to/indices/bar_index.rb'
206
206
  ]
207
207
 
208
- ActiveSupport::Dependencies.should_receive(:require_or_load).
208
+ expect(ActiveSupport::Dependencies).to receive(:require_or_load).
209
209
  with('/path/to/indices/foo_index.rb').once
210
- ActiveSupport::Dependencies.should_receive(:require_or_load).
210
+ expect(ActiveSupport::Dependencies).to receive(:require_or_load).
211
211
  with('/path/to/indices/bar_index.rb').once
212
212
 
213
213
  config.preload_indices
@@ -215,14 +215,14 @@ describe ThinkingSphinx::Configuration do
215
215
 
216
216
  it "does not double-load indices" do
217
217
  config.index_paths.replace ['/path/to/indices']
218
- Dir.stub! :[] => [
218
+ allow(Dir).to receive_messages :[] => [
219
219
  '/path/to/indices/foo_index.rb',
220
220
  '/path/to/indices/bar_index.rb'
221
221
  ]
222
222
 
223
- ActiveSupport::Dependencies.should_receive(:require_or_load).
223
+ expect(ActiveSupport::Dependencies).to receive(:require_or_load).
224
224
  with('/path/to/indices/foo_index.rb').once
225
- ActiveSupport::Dependencies.should_receive(:require_or_load).
225
+ expect(ActiveSupport::Dependencies).to receive(:require_or_load).
226
226
  with('/path/to/indices/bar_index.rb').once
227
227
 
228
228
  config.preload_indices
@@ -230,7 +230,7 @@ describe ThinkingSphinx::Configuration do
230
230
  end
231
231
 
232
232
  it 'adds distributed indices' do
233
- distributor.should_receive(:reconcile)
233
+ expect(distributor).to receive(:reconcile)
234
234
 
235
235
  config.preload_indices
236
236
  end
@@ -238,7 +238,7 @@ describe ThinkingSphinx::Configuration do
238
238
  it 'does not add distributed indices if disabled' do
239
239
  write_configuration('distributed_indices' => false)
240
240
 
241
- distributor.should_not_receive(:reconcile)
241
+ expect(distributor).not_to receive(:reconcile)
242
242
 
243
243
  config.preload_indices
244
244
  end
@@ -246,15 +246,15 @@ describe ThinkingSphinx::Configuration do
246
246
 
247
247
  describe '#render' do
248
248
  before :each do
249
- config.searchd.stub! :render => 'searchd { }'
249
+ allow(config.searchd).to receive_messages :render => 'searchd { }'
250
250
  end
251
251
 
252
252
  it "searches each index path for ruby files" do
253
253
  config.index_paths.replace ['/path/to/indices', '/path/to/other/indices']
254
254
 
255
- Dir.should_receive(:[]).with('/path/to/indices/**/*.rb').once.
255
+ expect(Dir).to receive(:[]).with('/path/to/indices/**/*.rb').once.
256
256
  and_return([])
257
- Dir.should_receive(:[]).with('/path/to/other/indices/**/*.rb').once.
257
+ expect(Dir).to receive(:[]).with('/path/to/other/indices/**/*.rb').once.
258
258
  and_return([])
259
259
 
260
260
  config.render
@@ -262,14 +262,14 @@ describe ThinkingSphinx::Configuration do
262
262
 
263
263
  it "loads each file returned" do
264
264
  config.index_paths.replace ['/path/to/indices']
265
- Dir.stub! :[] => [
265
+ allow(Dir).to receive_messages :[] => [
266
266
  '/path/to/indices/foo_index.rb',
267
267
  '/path/to/indices/bar_index.rb'
268
268
  ]
269
269
 
270
- ActiveSupport::Dependencies.should_receive(:require_or_load).
270
+ expect(ActiveSupport::Dependencies).to receive(:require_or_load).
271
271
  with('/path/to/indices/foo_index.rb').once
272
- ActiveSupport::Dependencies.should_receive(:require_or_load).
272
+ expect(ActiveSupport::Dependencies).to receive(:require_or_load).
273
273
  with('/path/to/indices/bar_index.rb').once
274
274
 
275
275
  config.render
@@ -277,14 +277,14 @@ describe ThinkingSphinx::Configuration do
277
277
 
278
278
  it "does not double-load indices" do
279
279
  config.index_paths.replace ['/path/to/indices']
280
- Dir.stub! :[] => [
280
+ allow(Dir).to receive_messages :[] => [
281
281
  '/path/to/indices/foo_index.rb',
282
282
  '/path/to/indices/bar_index.rb'
283
283
  ]
284
284
 
285
- ActiveSupport::Dependencies.should_receive(:require_or_load).
285
+ expect(ActiveSupport::Dependencies).to receive(:require_or_load).
286
286
  with('/path/to/indices/foo_index.rb').once
287
- ActiveSupport::Dependencies.should_receive(:require_or_load).
287
+ expect(ActiveSupport::Dependencies).to receive(:require_or_load).
288
288
  with('/path/to/indices/bar_index.rb').once
289
289
 
290
290
  config.preload_indices
@@ -297,33 +297,33 @@ describe ThinkingSphinx::Configuration do
297
297
  let(:output) { config.render }
298
298
 
299
299
  before :each do
300
- config.searchd.stub! :render => 'searchd { }'
300
+ allow(config.searchd).to receive_messages :render => 'searchd { }'
301
301
  end
302
302
 
303
303
  it "writes the rendered configuration to the file" do
304
304
  config.configuration_file = '/path/to/file.config'
305
305
 
306
- config.should_receive(:open).with('/path/to/file.config', 'w').
306
+ expect(config).to receive(:open).with('/path/to/file.config', 'w').
307
307
  and_yield(file)
308
- file.should_receive(:write).with(output)
308
+ expect(file).to receive(:write).with(output)
309
309
 
310
310
  config.render_to_file
311
311
  end
312
312
 
313
313
  it "creates a directory at the binlog_path" do
314
- FileUtils.stub :mkdir_p => true
315
- config.stub :searchd => double(:binlog_path => '/path/to/binlog')
314
+ allow(FileUtils).to receive_messages :mkdir_p => true
315
+ allow(config).to receive_messages :searchd => double(:binlog_path => '/path/to/binlog')
316
316
 
317
- FileUtils.should_receive(:mkdir_p).with('/path/to/binlog')
317
+ expect(FileUtils).to receive(:mkdir_p).with('/path/to/binlog')
318
318
 
319
319
  config.render_to_file
320
320
  end
321
321
 
322
322
  it "skips creating a directory when the binlog_path is blank" do
323
- FileUtils.stub :mkdir_p => true
324
- config.stub :searchd => double(:binlog_path => '')
323
+ allow(FileUtils).to receive_messages :mkdir_p => true
324
+ allow(config).to receive_messages :searchd => double(:binlog_path => '')
325
325
 
326
- FileUtils.should_not_receive(:mkdir_p)
326
+ expect(FileUtils).not_to receive(:mkdir_p)
327
327
 
328
328
  config.render_to_file
329
329
  end
@@ -332,31 +332,31 @@ describe ThinkingSphinx::Configuration do
332
332
  describe '#searchd' do
333
333
  describe '#address' do
334
334
  it "defaults to 127.0.0.1" do
335
- config.searchd.address.should == '127.0.0.1'
335
+ expect(config.searchd.address).to eq('127.0.0.1')
336
336
  end
337
337
 
338
338
  it "respects the address setting" do
339
339
  write_configuration('address' => '10.11.12.13')
340
340
 
341
- config.searchd.address.should == '10.11.12.13'
341
+ expect(config.searchd.address).to eq('10.11.12.13')
342
342
  end
343
343
  end
344
344
 
345
345
  describe '#mysql41' do
346
346
  it "defaults to 9306" do
347
- config.searchd.mysql41.should == 9306
347
+ expect(config.searchd.mysql41).to eq(9306)
348
348
  end
349
349
 
350
350
  it "respects the port setting" do
351
351
  write_configuration('port' => 9313)
352
352
 
353
- config.searchd.mysql41.should == 9313
353
+ expect(config.searchd.mysql41).to eq(9313)
354
354
  end
355
355
 
356
356
  it "respects the mysql41 setting" do
357
357
  write_configuration('mysql41' => 9307)
358
358
 
359
- config.searchd.mysql41.should == 9307
359
+ expect(config.searchd.mysql41).to eq(9307)
360
360
  end
361
361
  end
362
362
  end
@@ -364,66 +364,66 @@ describe ThinkingSphinx::Configuration do
364
364
  describe '#settings' do
365
365
  context 'YAML file exists' do
366
366
  before :each do
367
- File.stub :exists? => true
367
+ allow(File).to receive_messages :exists? => true
368
368
  end
369
369
 
370
370
  it "reads from the YAML file" do
371
- File.should_receive(:read).and_return('')
371
+ expect(File).to receive(:read).and_return('')
372
372
 
373
373
  config.settings
374
374
  end
375
375
 
376
376
  it "uses the settings for the given environment" do
377
- File.stub :read => {
377
+ allow(File).to receive_messages :read => {
378
378
  'test' => {'foo' => 'bar'},
379
379
  'staging' => {'baz' => 'qux'}
380
380
  }.to_yaml
381
- Rails.stub :env => 'staging'
381
+ allow(Rails).to receive_messages :env => 'staging'
382
382
 
383
- config.settings['baz'].should == 'qux'
383
+ expect(config.settings['baz']).to eq('qux')
384
384
  end
385
385
 
386
386
  it "remembers the file contents" do
387
- File.should_receive(:read).and_return('')
387
+ expect(File).to receive(:read).and_return('')
388
388
 
389
389
  config.settings
390
390
  config.settings
391
391
  end
392
392
 
393
393
  it "returns an empty hash when no settings for the environment exist" do
394
- File.stub :read => {'test' => {'foo' => 'bar'}}.to_yaml
395
- Rails.stub :env => 'staging'
394
+ allow(File).to receive_messages :read => {'test' => {'foo' => 'bar'}}.to_yaml
395
+ allow(Rails).to receive_messages :env => 'staging'
396
396
 
397
- config.settings.should == {}
397
+ expect(config.settings).to eq({})
398
398
  end
399
399
  end
400
400
 
401
401
  context 'YAML file does not exist' do
402
402
  before :each do
403
- File.stub :exists? => false
403
+ allow(File).to receive_messages :exists? => false
404
404
  end
405
405
 
406
406
  it "does not read the file" do
407
- File.should_not_receive(:read)
407
+ expect(File).not_to receive(:read)
408
408
 
409
409
  config.settings
410
410
  end
411
411
 
412
412
  it "returns an empty hash" do
413
- config.settings.should == {}
413
+ expect(config.settings).to eq({})
414
414
  end
415
415
  end
416
416
  end
417
417
 
418
418
  describe '#version' do
419
419
  it "defaults to 2.1.4" do
420
- config.version.should == '2.1.4'
420
+ expect(config.version).to eq('2.1.4')
421
421
  end
422
422
 
423
423
  it "respects supplied YAML versions" do
424
424
  write_configuration 'version' => '2.0.4'
425
425
 
426
- config.version.should == '2.0.4'
426
+ expect(config.version).to eq('2.0.4')
427
427
  end
428
428
  end
429
429
  end