thinking-sphinx 1.4.7 → 1.4.8

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.
@@ -37,12 +37,22 @@ namespace :thinking_sphinx do
37
37
 
38
38
  Dir["#{config.searchd_file_path}/*.spl"].each { |file| File.delete(file) }
39
39
 
40
- config.controller.start
41
-
42
- if sphinx_running?
43
- puts "Started successfully (pid #{sphinx_pid})."
40
+ if ENV["NODETACH"] == "true"
41
+ unless pid = fork
42
+ config.controller.start(:nodetach => true)
43
+ end
44
+ Signal.trap('TERM') { Process.kill(:QUIT, pid) }
45
+ Signal.trap('INT') { Process.kill(:QUIT, pid) }
46
+ Process.wait(pid)
44
47
  else
45
- puts "Failed to start searchd daemon. Check #{config.searchd_log_file}"
48
+ config.controller.start
49
+
50
+ if sphinx_running?
51
+ puts "Started successfully (pid #{sphinx_pid})."
52
+ else
53
+ puts "Failed to start searchd daemon. Check #{config.searchd_log_file}"
54
+ puts "Be sure to run thinking_sphinx:index before thinking_sphinx:start"
55
+ end
46
56
  end
47
57
  end
48
58
 
@@ -1,3 +1,3 @@
1
1
  module ThinkingSphinx
2
- Version = '1.4.7'
2
+ Version = '1.4.8'
3
3
  end
@@ -4,7 +4,7 @@ describe ThinkingSphinx::Configuration do
4
4
  describe "environment class method" do
5
5
  before :each do
6
6
  ThinkingSphinx::Configuration.reset_environment
7
-
7
+
8
8
  ENV["RAILS_ENV"] = nil
9
9
  end
10
10
 
@@ -19,12 +19,12 @@ describe ThinkingSphinx::Configuration do
19
19
 
20
20
  Object.send :remove_const, :Merb
21
21
  end
22
-
22
+
23
23
  it "should use RAILS_ENV if set" do
24
24
  RAILS_ENV = 'global_rails'
25
-
25
+
26
26
  ThinkingSphinx::Configuration.environment.should == 'global_rails'
27
-
27
+
28
28
  Object.send :remove_const, :RAILS_ENV
29
29
  end
30
30
 
@@ -37,31 +37,31 @@ describe ThinkingSphinx::Configuration do
37
37
  ThinkingSphinx::Configuration.environment.should == "development"
38
38
  end
39
39
  end
40
-
40
+
41
41
  describe '#version' do
42
42
  before :each do
43
43
  @config = ThinkingSphinx::Configuration.instance
44
44
  @config.reset
45
45
  end
46
-
46
+
47
47
  it "should use the given version from sphinx.yml if there is one" do
48
48
  open("#{RAILS_ROOT}/config/sphinx.yml", "w") do |f|
49
49
  f.write YAML.dump({'development' => {'version' => '0.9.7'}})
50
50
  end
51
51
  @config.reset
52
-
52
+
53
53
  @config.version.should == '0.9.7'
54
-
54
+
55
55
  FileUtils.rm "#{RAILS_ROOT}/config/sphinx.yml"
56
56
  end
57
-
57
+
58
58
  it "should detect the version from Riddle otherwise" do
59
59
  controller = @config.controller
60
60
  controller.stub!(:sphinx_version => '0.9.6')
61
-
61
+
62
62
  Riddle::Controller.stub!(:new => controller)
63
63
  @config.reset
64
-
64
+
65
65
  @config.version.should == '0.9.6'
66
66
  end
67
67
  end
@@ -118,7 +118,7 @@ describe ThinkingSphinx::Configuration do
118
118
  config.app_root = "/here/somewhere"
119
119
  end
120
120
  ThinkingSphinx::Configuration.instance.app_root.should == "/here/somewhere"
121
-
121
+
122
122
  ThinkingSphinx::Configuration.instance.reset
123
123
  end
124
124
  end
@@ -171,7 +171,7 @@ describe ThinkingSphinx::Configuration do
171
171
 
172
172
  it "should insert set index options into the configuration file" do
173
173
  config = ThinkingSphinx::Configuration.instance
174
-
174
+
175
175
  ThinkingSphinx::Configuration::IndexOptions.each do |option|
176
176
  config.reset
177
177
  config.index_options[option.to_sym] = "something"
@@ -187,7 +187,7 @@ describe ThinkingSphinx::Configuration do
187
187
  it "should insert set source options into the configuration file" do
188
188
  config = ThinkingSphinx::Configuration.instance
189
189
  config.reset
190
-
190
+
191
191
  config.source_options[:sql_query_pre] = ["something"]
192
192
  ThinkingSphinx::Configuration::SourceOptions.each do |option|
193
193
  config.source_options[option.to_sym] ||= "something"
@@ -198,21 +198,21 @@ describe ThinkingSphinx::Configuration do
198
198
 
199
199
  config.source_options.delete option.to_sym
200
200
  end
201
-
202
- config.source_options[:sql_query_pre] = nil
201
+
202
+ config.source_options[:sql_query_pre] = nil
203
203
  end
204
-
204
+
205
205
  it "should not blow away delta or utf options if sql pre is specified in config" do
206
206
  config = ThinkingSphinx::Configuration.instance
207
207
  config.reset
208
-
208
+
209
209
  config.source_options[:sql_query_pre] = ["a pre query"]
210
210
  config.build
211
211
  file = open(config.config_file) { |f| f.read }
212
-
212
+
213
213
  file.should match(/sql_query_pre = a pre query\n\s*sql_query_pre = UPDATE `\w+` SET `delta` = 0 WHERE `delta` = 1/im)
214
214
  file.should match(/sql_query_pre = a pre query\n\s*sql_query_pre = \n/im)
215
-
215
+
216
216
  config.source_options[:sql_query_pre] = nil
217
217
  end
218
218
 
@@ -230,24 +230,24 @@ describe ThinkingSphinx::Configuration do
230
230
  }
231
231
  file.should_not match(/index alpha_core\s+\{\s+[^\}]*prefix_fields\s+=[^\}]*\}/m)
232
232
  end
233
-
233
+
234
234
  describe '#generate' do
235
235
  let(:config) { ThinkingSphinx::Configuration.instance }
236
-
236
+
237
237
  it "should set all sphinx_internal_id attributes to bigints if one is" do
238
238
  config.reset
239
239
  config.generate
240
-
240
+
241
241
  config.configuration.indexes.each do |index|
242
242
  next if index.is_a? Riddle::Configuration::DistributedIndex
243
-
243
+
244
244
  index.sources.each do |source|
245
245
  source.sql_attr_bigint.should include(:sphinx_internal_id)
246
246
  end
247
247
  end
248
248
  end
249
249
  end
250
-
250
+
251
251
  describe '#client' do
252
252
  before :each do
253
253
  @config = ThinkingSphinx::Configuration.instance
@@ -256,19 +256,19 @@ describe ThinkingSphinx::Configuration do
256
256
  @config.configuration.searchd.max_matches = 100
257
257
  @config.timeout = 1
258
258
  end
259
-
259
+
260
260
  it "should return an instance of Riddle::Client" do
261
261
  @config.client.should be_a(Riddle::Client)
262
262
  end
263
-
263
+
264
264
  it "should use the configuration address" do
265
265
  @config.client.server.should == 'domain.url'
266
266
  end
267
-
267
+
268
268
  it "should use the configuration port" do
269
269
  @config.client.port.should == 3333
270
270
  end
271
-
271
+
272
272
  it "should use the configuration max matches" do
273
273
  @config.client.max_matches.should == 100
274
274
  end
@@ -276,17 +276,55 @@ describe ThinkingSphinx::Configuration do
276
276
  it "should use the configuration timeout" do
277
277
  @config.client.timeout.should == 1
278
278
  end
279
+
280
+ describe 'when shuffle is enabled' do
281
+ let(:client) { double('client', :max_matches= => nil, :timeout= => nil) }
282
+
283
+ before :each do
284
+ @config.shuffle = true
285
+ end
286
+
287
+ it "should shuffle client servers" do
288
+ @config.address = ['1.1.1.1', '2.2.2.2']
289
+ @config.address.stub!(:shuffle => ['2.2.2.2', '1.1.1.1'])
290
+
291
+ Riddle::Client.should_receive(:new) do |addresses, port, key|
292
+ addresses.should == ['2.2.2.2', '1.1.1.1']
293
+ client
294
+ end
295
+ @config.client
296
+ end
297
+ end
298
+
299
+ describe 'when shuffle is disabled' do
300
+ let(:client) { double('client', :max_matches= => nil, :timeout= => nil) }
301
+
302
+ before :each do
303
+ @config.shuffle = false
304
+ end
305
+
306
+ it "should not shuffle client servers" do
307
+ @config.address = ['1.1.1.1', '2.2.2.2.', '3.3.3.3', '4.4.4.4', '5.5.5.5']
308
+
309
+ @config.address.should_not_receive(:shuffle)
310
+ Riddle::Client.should_receive(:new) do |addresses, port, key|
311
+ addresses.should == ['1.1.1.1', '2.2.2.2.', '3.3.3.3', '4.4.4.4', '5.5.5.5']
312
+ client
313
+ end
314
+ @config.client
315
+ end
316
+ end
279
317
  end
280
-
318
+
281
319
  describe '#models_by_crc' do
282
320
  before :each do
283
321
  @config = ThinkingSphinx::Configuration.instance
284
322
  end
285
-
323
+
286
324
  it "should return a hash" do
287
325
  @config.models_by_crc.should be_a(Hash)
288
326
  end
289
-
327
+
290
328
  it "should pair class names to their crc codes" do
291
329
  @config.models_by_crc[Person.to_crc32].should == 'Person'
292
330
  @config.models_by_crc[Alpha.to_crc32].should == 'Alpha'
@@ -31,18 +31,20 @@ describe ThinkingSphinx::Context do
31
31
  }.should_not raise_error
32
32
  end
33
33
 
34
- it "should not raise errors if the file name does not represent a class name" do
35
- class_name.should_receive(:constantize).and_raise(NameError)
34
+ it "should report name errors but not raise them" do
35
+ class_name.stub(:constantize).and_raise(NameError)
36
+ STDERR.stub!(:puts => '')
37
+ STDERR.should_receive(:puts).with('Warning: Error loading a.rb:')
36
38
 
37
39
  lambda {
38
40
  ts_context.prepare
39
41
  }.should_not raise_error
40
42
  end
41
43
 
42
- # Fails in Ruby 1.9 (or maybe it's an RSpec update). Not sure why.
43
- it "should retry if the first pass fails and contains a directory" do
44
+ it "should report load errors but not raise them" do
44
45
  class_name.stub(:constantize).and_raise(LoadError)
45
- model_name_lower.should_receive(:gsub!).twice.and_return(true, nil)
46
+ STDERR.stub!(:puts => '')
47
+ STDERR.should_receive(:puts).with('Warning: Error loading a.rb:')
46
48
 
47
49
  lambda {
48
50
  ts_context.prepare
metadata CHANGED
@@ -1,141 +1,148 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: thinking-sphinx
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.4.8
4
5
  prerelease:
5
- version: 1.4.7
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Pat Allan
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-08-28 00:00:00 +10:00
14
- default_executable:
15
- dependencies:
16
- - !ruby/object:Gem::Dependency
12
+ date: 2011-10-10 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
17
15
  name: activerecord
18
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &70247840819240 !ruby/object:Gem::Requirement
19
17
  none: false
20
- requirements:
18
+ requirements:
21
19
  - - <
22
- - !ruby/object:Gem::Version
20
+ - !ruby/object:Gem::Version
23
21
  version: 3.0.0
24
- - - ">="
25
- - !ruby/object:Gem::Version
22
+ - - ! '>='
23
+ - !ruby/object:Gem::Version
26
24
  version: 1.15.6
27
25
  type: :runtime
28
26
  prerelease: false
29
- version_requirements: *id001
30
- - !ruby/object:Gem::Dependency
27
+ version_requirements: *70247840819240
28
+ - !ruby/object:Gem::Dependency
31
29
  name: after_commit
32
- requirement: &id002 !ruby/object:Gem::Requirement
30
+ requirement: &70247840830120 !ruby/object:Gem::Requirement
33
31
  none: false
34
- requirements:
35
- - - ">="
36
- - !ruby/object:Gem::Version
32
+ requirements:
33
+ - - ! '>='
34
+ - !ruby/object:Gem::Version
37
35
  version: 1.0.7
38
36
  type: :runtime
39
37
  prerelease: false
40
- version_requirements: *id002
41
- - !ruby/object:Gem::Dependency
38
+ version_requirements: *70247840830120
39
+ - !ruby/object:Gem::Dependency
42
40
  name: riddle
43
- requirement: &id003 !ruby/object:Gem::Requirement
41
+ requirement: &70247840827220 !ruby/object:Gem::Requirement
44
42
  none: false
45
- requirements:
46
- - - ">="
47
- - !ruby/object:Gem::Version
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
48
46
  version: 1.3.3
49
47
  type: :runtime
50
48
  prerelease: false
51
- version_requirements: *id003
52
- - !ruby/object:Gem::Dependency
49
+ version_requirements: *70247840827220
50
+ - !ruby/object:Gem::Dependency
51
+ name: builder
52
+ requirement: &70247840841860 !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ! '>='
56
+ - !ruby/object:Gem::Version
57
+ version: 2.1.2
58
+ type: :runtime
59
+ prerelease: false
60
+ version_requirements: *70247840841860
61
+ - !ruby/object:Gem::Dependency
53
62
  name: cucumber
54
- requirement: &id004 !ruby/object:Gem::Requirement
63
+ requirement: &70247840840300 !ruby/object:Gem::Requirement
55
64
  none: false
56
- requirements:
57
- - - "="
58
- - !ruby/object:Gem::Version
65
+ requirements:
66
+ - - =
67
+ - !ruby/object:Gem::Version
59
68
  version: 1.0.2
60
69
  type: :development
61
70
  prerelease: false
62
- version_requirements: *id004
63
- - !ruby/object:Gem::Dependency
71
+ version_requirements: *70247840840300
72
+ - !ruby/object:Gem::Dependency
64
73
  name: faker
65
- requirement: &id005 !ruby/object:Gem::Requirement
74
+ requirement: &70247840839480 !ruby/object:Gem::Requirement
66
75
  none: false
67
- requirements:
68
- - - "="
69
- - !ruby/object:Gem::Version
76
+ requirements:
77
+ - - =
78
+ - !ruby/object:Gem::Version
70
79
  version: 0.3.1
71
80
  type: :development
72
81
  prerelease: false
73
- version_requirements: *id005
74
- - !ruby/object:Gem::Dependency
82
+ version_requirements: *70247840839480
83
+ - !ruby/object:Gem::Dependency
75
84
  name: ginger
76
- requirement: &id006 !ruby/object:Gem::Requirement
85
+ requirement: &70247840837960 !ruby/object:Gem::Requirement
77
86
  none: false
78
- requirements:
79
- - - "="
80
- - !ruby/object:Gem::Version
87
+ requirements:
88
+ - - =
89
+ - !ruby/object:Gem::Version
81
90
  version: 1.2.0
82
91
  type: :development
83
92
  prerelease: false
84
- version_requirements: *id006
85
- - !ruby/object:Gem::Dependency
93
+ version_requirements: *70247840837960
94
+ - !ruby/object:Gem::Dependency
86
95
  name: rake
87
- requirement: &id007 !ruby/object:Gem::Requirement
96
+ requirement: &70247840836280 !ruby/object:Gem::Requirement
88
97
  none: false
89
- requirements:
90
- - - ">="
91
- - !ruby/object:Gem::Version
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
92
101
  version: 0.9.2
93
102
  type: :development
94
103
  prerelease: false
95
- version_requirements: *id007
96
- - !ruby/object:Gem::Dependency
104
+ version_requirements: *70247840836280
105
+ - !ruby/object:Gem::Dependency
97
106
  name: rspec
98
- requirement: &id008 !ruby/object:Gem::Requirement
107
+ requirement: &70247840834860 !ruby/object:Gem::Requirement
99
108
  none: false
100
- requirements:
101
- - - "="
102
- - !ruby/object:Gem::Version
109
+ requirements:
110
+ - - =
111
+ - !ruby/object:Gem::Version
103
112
  version: 2.6.0
104
113
  type: :development
105
114
  prerelease: false
106
- version_requirements: *id008
107
- - !ruby/object:Gem::Dependency
115
+ version_requirements: *70247840834860
116
+ - !ruby/object:Gem::Dependency
108
117
  name: will_paginate
109
- requirement: &id009 !ruby/object:Gem::Requirement
118
+ requirement: &70247840860800 !ruby/object:Gem::Requirement
110
119
  none: false
111
- requirements:
112
- - - "="
113
- - !ruby/object:Gem::Version
120
+ requirements:
121
+ - - =
122
+ - !ruby/object:Gem::Version
114
123
  version: 2.3.15
115
124
  type: :development
116
125
  prerelease: false
117
- version_requirements: *id009
118
- - !ruby/object:Gem::Dependency
126
+ version_requirements: *70247840860800
127
+ - !ruby/object:Gem::Dependency
119
128
  name: yard
120
- requirement: &id010 !ruby/object:Gem::Requirement
129
+ requirement: &70247840858980 !ruby/object:Gem::Requirement
121
130
  none: false
122
- requirements:
123
- - - ">="
124
- - !ruby/object:Gem::Version
131
+ requirements:
132
+ - - ! '>='
133
+ - !ruby/object:Gem::Version
125
134
  version: 0.7.2
126
135
  type: :development
127
136
  prerelease: false
128
- version_requirements: *id010
129
- description: A concise and easy-to-use Ruby library that connects ActiveRecord to the Sphinx search daemon, managing configuration, indexing and searching.
130
- email:
137
+ version_requirements: *70247840858980
138
+ description: A concise and easy-to-use Ruby library that connects ActiveRecord to
139
+ the Sphinx search daemon, managing configuration, indexing and searching.
140
+ email:
131
141
  - pat@freelancing-gods.com
132
142
  executables: []
133
-
134
143
  extensions: []
135
-
136
144
  extra_rdoc_files: []
137
-
138
- files:
145
+ files:
139
146
  - lib/cucumber/thinking_sphinx/external_world.rb
140
147
  - lib/cucumber/thinking_sphinx/internal_world.rb
141
148
  - lib/cucumber/thinking_sphinx/sql_logger.rb
@@ -306,44 +313,42 @@ files:
306
313
  - spec/thinking_sphinx/source_spec.rb
307
314
  - spec/thinking_sphinx/test_spec.rb
308
315
  - spec/thinking_sphinx_spec.rb
309
- has_rdoc: true
310
316
  homepage: http://freelancing-god.github.com/ts/en/
311
317
  licenses: []
318
+ post_install_message: ! 'If you''re upgrading, you should read this:
312
319
 
313
- post_install_message: |+
314
- If you're upgrading, you should read this:
315
320
  http://freelancing-god.github.com/ts/en/upgrading.html
316
-
317
- rdoc_options: []
318
321
 
319
- require_paths:
322
+
323
+ '
324
+ rdoc_options: []
325
+ require_paths:
320
326
  - lib
321
- required_ruby_version: !ruby/object:Gem::Requirement
327
+ required_ruby_version: !ruby/object:Gem::Requirement
322
328
  none: false
323
- requirements:
324
- - - ">="
325
- - !ruby/object:Gem::Version
326
- hash: 3481790220577304341
327
- segments:
329
+ requirements:
330
+ - - ! '>='
331
+ - !ruby/object:Gem::Version
332
+ version: '0'
333
+ segments:
328
334
  - 0
329
- version: "0"
330
- required_rubygems_version: !ruby/object:Gem::Requirement
335
+ hash: 213269573816291082
336
+ required_rubygems_version: !ruby/object:Gem::Requirement
331
337
  none: false
332
- requirements:
333
- - - ">="
334
- - !ruby/object:Gem::Version
335
- hash: 3481790220577304341
336
- segments:
338
+ requirements:
339
+ - - ! '>='
340
+ - !ruby/object:Gem::Version
341
+ version: '0'
342
+ segments:
337
343
  - 0
338
- version: "0"
344
+ hash: 213269573816291082
339
345
  requirements: []
340
-
341
346
  rubyforge_project: thinking-sphinx
342
- rubygems_version: 1.6.2
347
+ rubygems_version: 1.8.10
343
348
  signing_key:
344
349
  specification_version: 3
345
350
  summary: ActiveRecord/Rails Sphinx library
346
- test_files:
351
+ test_files:
347
352
  - features/abstract_inheritance.feature
348
353
  - features/alternate_primary_key.feature
349
354
  - features/attribute_transformation.feature