thinking-sphinx 1.4.7 → 1.4.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -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