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.
- data/README.textile +8 -3
- data/features/attribute_transformation.feature +4 -4
- data/features/step_definitions/common_steps.rb +6 -2
- data/lib/thinking_sphinx/active_record.rb +1 -1
- data/lib/thinking_sphinx/adapters/postgresql_adapter.rb +10 -2
- data/lib/thinking_sphinx/attribute.rb +0 -4
- data/lib/thinking_sphinx/configuration.rb +77 -61
- data/lib/thinking_sphinx/context.rb +14 -18
- data/lib/thinking_sphinx/index/builder.rb +64 -69
- data/lib/thinking_sphinx/search.rb +6 -2
- data/lib/thinking_sphinx/tasks.rb +15 -5
- data/lib/thinking_sphinx/version.rb +1 -1
- data/spec/thinking_sphinx/configuration_spec.rb +70 -32
- data/spec/thinking_sphinx/context_spec.rb +7 -5
- metadata +103 -98
@@ -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
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
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
|
-
|
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
|
|
@@ -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
|
35
|
-
class_name.
|
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
|
-
|
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
|
-
|
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
|
-
|
14
|
-
|
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: &
|
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: *
|
30
|
-
- !ruby/object:Gem::Dependency
|
27
|
+
version_requirements: *70247840819240
|
28
|
+
- !ruby/object:Gem::Dependency
|
31
29
|
name: after_commit
|
32
|
-
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: *
|
41
|
-
- !ruby/object:Gem::Dependency
|
38
|
+
version_requirements: *70247840830120
|
39
|
+
- !ruby/object:Gem::Dependency
|
42
40
|
name: riddle
|
43
|
-
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: *
|
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: &
|
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: *
|
63
|
-
- !ruby/object:Gem::Dependency
|
71
|
+
version_requirements: *70247840840300
|
72
|
+
- !ruby/object:Gem::Dependency
|
64
73
|
name: faker
|
65
|
-
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: *
|
74
|
-
- !ruby/object:Gem::Dependency
|
82
|
+
version_requirements: *70247840839480
|
83
|
+
- !ruby/object:Gem::Dependency
|
75
84
|
name: ginger
|
76
|
-
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: *
|
85
|
-
- !ruby/object:Gem::Dependency
|
93
|
+
version_requirements: *70247840837960
|
94
|
+
- !ruby/object:Gem::Dependency
|
86
95
|
name: rake
|
87
|
-
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: *
|
96
|
-
- !ruby/object:Gem::Dependency
|
104
|
+
version_requirements: *70247840836280
|
105
|
+
- !ruby/object:Gem::Dependency
|
97
106
|
name: rspec
|
98
|
-
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: *
|
107
|
-
- !ruby/object:Gem::Dependency
|
115
|
+
version_requirements: *70247840834860
|
116
|
+
- !ruby/object:Gem::Dependency
|
108
117
|
name: will_paginate
|
109
|
-
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: *
|
118
|
-
- !ruby/object:Gem::Dependency
|
126
|
+
version_requirements: *70247840860800
|
127
|
+
- !ruby/object:Gem::Dependency
|
119
128
|
name: yard
|
120
|
-
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: *
|
129
|
-
description: A concise and easy-to-use Ruby library that connects ActiveRecord to
|
130
|
-
|
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
|
-
|
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
|
-
|
327
|
-
segments:
|
329
|
+
requirements:
|
330
|
+
- - ! '>='
|
331
|
+
- !ruby/object:Gem::Version
|
332
|
+
version: '0'
|
333
|
+
segments:
|
328
334
|
- 0
|
329
|
-
|
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
|
-
|
336
|
-
segments:
|
338
|
+
requirements:
|
339
|
+
- - ! '>='
|
340
|
+
- !ruby/object:Gem::Version
|
341
|
+
version: '0'
|
342
|
+
segments:
|
337
343
|
- 0
|
338
|
-
|
344
|
+
hash: 213269573816291082
|
339
345
|
requirements: []
|
340
|
-
|
341
346
|
rubyforge_project: thinking-sphinx
|
342
|
-
rubygems_version: 1.
|
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
|