thinking-sphinx 1.3.16 → 1.3.17
Sign up to get free protection for your applications and to get access to all the features.
- data/README.textile +4 -0
- data/VERSION +1 -1
- data/features/{support → thinking_sphinx}/database.example.yml +0 -0
- data/features/thinking_sphinx/database.yml +4 -0
- data/features/{support → thinking_sphinx}/db/fixtures/alphas.rb +0 -0
- data/features/{support → thinking_sphinx}/db/fixtures/authors.rb +0 -0
- data/features/{support → thinking_sphinx}/db/fixtures/betas.rb +0 -0
- data/features/{support → thinking_sphinx}/db/fixtures/boxes.rb +0 -0
- data/features/{support → thinking_sphinx}/db/fixtures/categories.rb +0 -0
- data/features/{support → thinking_sphinx}/db/fixtures/cats.rb +0 -0
- data/features/{support → thinking_sphinx}/db/fixtures/comments.rb +1 -1
- data/features/{support → thinking_sphinx}/db/fixtures/developers.rb +2 -0
- data/features/{support → thinking_sphinx}/db/fixtures/dogs.rb +0 -0
- data/features/{support → thinking_sphinx}/db/fixtures/extensible_betas.rb +0 -0
- data/features/{support → thinking_sphinx}/db/fixtures/foxes.rb +0 -0
- data/features/{support → thinking_sphinx}/db/fixtures/gammas.rb +0 -0
- data/features/{support → thinking_sphinx}/db/fixtures/music.rb +0 -0
- data/features/{support → thinking_sphinx}/db/fixtures/people.rb +0 -0
- data/features/{support → thinking_sphinx}/db/fixtures/posts.rb +0 -0
- data/features/{support → thinking_sphinx}/db/fixtures/robots.rb +0 -0
- data/features/{support → thinking_sphinx}/db/fixtures/tags.rb +0 -0
- data/features/{support → thinking_sphinx}/db/migrations/create_alphas.rb +0 -0
- data/features/{support → thinking_sphinx}/db/migrations/create_animals.rb +0 -0
- data/features/{support → thinking_sphinx}/db/migrations/create_authors.rb +0 -0
- data/features/{support → thinking_sphinx}/db/migrations/create_authors_posts.rb +0 -0
- data/features/{support → thinking_sphinx}/db/migrations/create_betas.rb +0 -0
- data/features/{support → thinking_sphinx}/db/migrations/create_boxes.rb +0 -0
- data/features/{support → thinking_sphinx}/db/migrations/create_categories.rb +0 -0
- data/features/{support → thinking_sphinx}/db/migrations/create_comments.rb +0 -0
- data/features/{support → thinking_sphinx}/db/migrations/create_developers.rb +0 -2
- data/features/{support → thinking_sphinx}/db/migrations/create_extensible_betas.rb +0 -0
- data/features/{support → thinking_sphinx}/db/migrations/create_gammas.rb +0 -0
- data/features/{support → thinking_sphinx}/db/migrations/create_genres.rb +0 -0
- data/features/{support → thinking_sphinx}/db/migrations/create_music.rb +0 -0
- data/features/{support → thinking_sphinx}/db/migrations/create_people.rb +0 -0
- data/features/{support → thinking_sphinx}/db/migrations/create_posts.rb +0 -0
- data/features/{support → thinking_sphinx}/db/migrations/create_robots.rb +0 -0
- data/features/{support → thinking_sphinx}/db/migrations/create_taggings.rb +0 -0
- data/features/{support → thinking_sphinx}/db/migrations/create_tags.rb +0 -0
- data/features/{support → thinking_sphinx}/models/alpha.rb +0 -0
- data/features/{support → thinking_sphinx}/models/animal.rb +0 -0
- data/features/{support → thinking_sphinx}/models/author.rb +0 -0
- data/features/{support → thinking_sphinx}/models/beta.rb +0 -0
- data/features/{support → thinking_sphinx}/models/box.rb +0 -0
- data/features/{support → thinking_sphinx}/models/cat.rb +0 -0
- data/features/{support → thinking_sphinx}/models/category.rb +0 -0
- data/features/{support → thinking_sphinx}/models/comment.rb +0 -0
- data/features/{support → thinking_sphinx}/models/developer.rb +2 -2
- data/features/{support → thinking_sphinx}/models/dog.rb +0 -0
- data/features/{support → thinking_sphinx}/models/extensible_beta.rb +1 -1
- data/features/{support → thinking_sphinx}/models/fox.rb +0 -0
- data/features/{support → thinking_sphinx}/models/gamma.rb +0 -0
- data/features/{support → thinking_sphinx}/models/genre.rb +0 -0
- data/features/{support → thinking_sphinx}/models/medium.rb +0 -0
- data/features/{support → thinking_sphinx}/models/music.rb +0 -0
- data/features/{support → thinking_sphinx}/models/person.rb +0 -0
- data/features/{support → thinking_sphinx}/models/post.rb +0 -0
- data/features/{support → thinking_sphinx}/models/robot.rb +0 -0
- data/features/{support → thinking_sphinx}/models/tag.rb +0 -0
- data/features/{support → thinking_sphinx}/models/tagging.rb +0 -0
- data/lib/cucumber/thinking_sphinx/internal_world.rb +4 -4
- data/lib/thinking_sphinx.rb +11 -1
- data/lib/thinking_sphinx/active_record.rb +12 -5
- data/lib/thinking_sphinx/context.rb +7 -4
- data/lib/thinking_sphinx/deltas/default_delta.rb +1 -1
- data/lib/thinking_sphinx/index/builder.rb +6 -6
- data/lib/thinking_sphinx/index/faux_column.rb +4 -0
- data/lib/thinking_sphinx/search.rb +3 -1
- data/lib/thinking_sphinx/source/internal_properties.rb +0 -1
- data/spec/thinking_sphinx/active_record/delta_spec.rb +1 -1
- data/spec/thinking_sphinx/active_record_spec.rb +6 -10
- data/spec/thinking_sphinx/index/builder_spec.rb +30 -30
- data/spec/thinking_sphinx/index/faux_column_spec.rb +7 -1
- data/spec/thinking_sphinx_spec.rb +27 -0
- data/tasks/distribution.rb +7 -0
- data/tasks/testing.rb +4 -0
- metadata +174 -75
- data/features/support/database.yml +0 -5
data/README.textile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.3.
|
1
|
+
1.3.17
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -10,10 +10,10 @@ module Cucumber
|
|
10
10
|
|
11
11
|
def initialize
|
12
12
|
@temporary_directory = "#{Dir.pwd}/tmp"
|
13
|
-
@migrations_directory = "features/
|
14
|
-
@models_directory = "features/
|
15
|
-
@fixtures_directory = "features/
|
16
|
-
@database_file = "features/
|
13
|
+
@migrations_directory = "features/thinking_sphinx/db/migrations"
|
14
|
+
@models_directory = "features/thinking_sphinx/models"
|
15
|
+
@fixtures_directory = "features/thinking_sphinx/db/fixtures"
|
16
|
+
@database_file = "features/thinking_sphinx/database.yml"
|
17
17
|
|
18
18
|
@adapter = ENV['DATABASE'] || 'mysql'
|
19
19
|
@database = 'thinking_sphinx'
|
data/lib/thinking_sphinx.rb
CHANGED
@@ -70,7 +70,7 @@ module ThinkingSphinx
|
|
70
70
|
if @@context.nil?
|
71
71
|
@@sphinx_mutex.synchronize do
|
72
72
|
if @@context.nil?
|
73
|
-
|
73
|
+
set_context
|
74
74
|
@@context.prepare
|
75
75
|
end
|
76
76
|
end
|
@@ -78,12 +78,22 @@ module ThinkingSphinx
|
|
78
78
|
|
79
79
|
@@context
|
80
80
|
end
|
81
|
+
|
82
|
+
def self.set_context(*classes)
|
83
|
+
@@context = ThinkingSphinx::Context.new(*classes)
|
84
|
+
end
|
81
85
|
|
82
86
|
def self.reset_context!
|
83
87
|
@@sphinx_mutex.synchronize do
|
84
88
|
@@context = nil
|
85
89
|
end
|
86
90
|
end
|
91
|
+
|
92
|
+
def self.indexed_models=(classes = [])
|
93
|
+
@@sphinx_mutex.synchronize do
|
94
|
+
set_context *classes
|
95
|
+
end
|
96
|
+
end
|
87
97
|
|
88
98
|
def self.unique_id_expression(offset = nil)
|
89
99
|
"* #{context.indexed_models.size} + #{offset || 0}"
|
@@ -154,9 +154,7 @@ module ThinkingSphinx
|
|
154
154
|
end
|
155
155
|
|
156
156
|
self.sphinx_index_blocks << lambda {
|
157
|
-
|
158
|
-
add_sphinx_callbacks_and_extend(index.delta?)
|
159
|
-
add_sphinx_index index
|
157
|
+
add_sphinx_index name, &block
|
160
158
|
}
|
161
159
|
|
162
160
|
include ThinkingSphinx::ActiveRecord::Scopes
|
@@ -188,9 +186,18 @@ module ThinkingSphinx
|
|
188
186
|
end
|
189
187
|
end
|
190
188
|
|
191
|
-
def add_sphinx_index(
|
189
|
+
def add_sphinx_index(name, &block)
|
190
|
+
index = ThinkingSphinx::Index::Builder.generate self, name, &block
|
191
|
+
|
192
|
+
unless sphinx_indexes.any? { |i| i.name == index.name }
|
193
|
+
add_sphinx_callbacks_and_extend(index.delta?)
|
194
|
+
insert_sphinx_index index
|
195
|
+
end
|
196
|
+
end
|
197
|
+
|
198
|
+
def insert_sphinx_index(index)
|
192
199
|
self.sphinx_indexes << index
|
193
|
-
subclasses.each { |klass| klass.
|
200
|
+
subclasses.each { |klass| klass.insert_sphinx_index(index) }
|
194
201
|
end
|
195
202
|
|
196
203
|
def has_sphinx_indexes?
|
@@ -1,8 +1,11 @@
|
|
1
1
|
class ThinkingSphinx::Context
|
2
2
|
attr_reader :indexed_models
|
3
3
|
|
4
|
-
def initialize
|
4
|
+
def initialize(*models)
|
5
5
|
@indexed_models = []
|
6
|
+
models.each do |model|
|
7
|
+
add_indexed_model model
|
8
|
+
end
|
6
9
|
end
|
7
10
|
|
8
11
|
def prepare
|
@@ -47,12 +50,12 @@ class ThinkingSphinx::Context
|
|
47
50
|
ThinkingSphinx::Configuration.instance.model_directories.each do |base|
|
48
51
|
Dir["#{base}**/*.rb"].each do |file|
|
49
52
|
model_name = file.gsub(/^#{base}([\w_\/\\]+)\.rb/, '\1')
|
50
|
-
|
53
|
+
|
51
54
|
next if model_name.nil?
|
52
55
|
next if ::ActiveRecord::Base.send(:subclasses).detect { |model|
|
53
|
-
model.name == model_name
|
56
|
+
model.name == model_name.camelize
|
54
57
|
}
|
55
|
-
|
58
|
+
|
56
59
|
begin
|
57
60
|
model_name.camelize.constantize
|
58
61
|
rescue LoadError
|
@@ -44,7 +44,7 @@ module ThinkingSphinx
|
|
44
44
|
config = ThinkingSphinx::Configuration.instance
|
45
45
|
rotate = ThinkingSphinx.sphinx_running? ? "--rotate" : ""
|
46
46
|
|
47
|
-
output = `#{config.bin_path}#{config.indexer_binary_name} --config #{config.config_file} #{rotate} #{model.delta_index_names.join(' ')}`
|
47
|
+
output = `#{config.bin_path}#{config.indexer_binary_name} --config '#{config.config_file}' #{rotate} #{model.delta_index_names.join(' ')}`
|
48
48
|
puts(output) unless ThinkingSphinx.suppress_delta_output?
|
49
49
|
end
|
50
50
|
|
@@ -119,13 +119,13 @@ module ThinkingSphinx
|
|
119
119
|
# database.
|
120
120
|
#
|
121
121
|
# Attributes are limited to the following types: integers, floats,
|
122
|
-
# datetimes (converted to timestamps), booleans and
|
123
|
-
# forget that Sphinx converts string attributes to
|
124
|
-
# useful for sorting, but that's about it.
|
122
|
+
# datetimes (converted to timestamps), booleans, strings and MVAs
|
123
|
+
# (:multi). Don't forget that Sphinx converts string attributes to
|
124
|
+
# integers, which are useful for sorting, but that's about it.
|
125
125
|
#
|
126
|
-
#
|
127
|
-
#
|
128
|
-
#
|
126
|
+
# Collection of integers are known as multi-value attributes (MVAs).
|
127
|
+
# Generally these would be through a has_many relationship, like in this
|
128
|
+
# example:
|
129
129
|
#
|
130
130
|
# has posts(:id), :as => :post_ids
|
131
131
|
#
|
@@ -50,6 +50,10 @@ module ThinkingSphinx
|
|
50
50
|
@name.is_a?(String) && @stack.empty?
|
51
51
|
end
|
52
52
|
|
53
|
+
def to_ary
|
54
|
+
[self]
|
55
|
+
end
|
56
|
+
|
53
57
|
# This handles any 'invalid' method calls and sets them as the name,
|
54
58
|
# and pushing the previous name into the stack. The object returns
|
55
59
|
# itself.
|
@@ -210,7 +210,9 @@ module ThinkingSphinx
|
|
210
210
|
return options[:index] if options[:index]
|
211
211
|
return '*' if classes.empty?
|
212
212
|
|
213
|
-
classes.collect { |klass|
|
213
|
+
classes.collect { |klass|
|
214
|
+
klass.sphinx_index_names
|
215
|
+
}.flatten.uniq.join(',')
|
214
216
|
end
|
215
217
|
|
216
218
|
def each_with_groupby_and_count(&block)
|
@@ -5,7 +5,6 @@ module ThinkingSphinx
|
|
5
5
|
add_internal_attribute :sphinx_internal_id, nil,
|
6
6
|
@model.primary_key_for_sphinx.to_sym
|
7
7
|
add_internal_attribute :class_crc, :integer, crc_column, true
|
8
|
-
add_internal_attribute :subclass_crcs, :multi, subclasses_to_s
|
9
8
|
add_internal_attribute :sphinx_deleted, :integer, "0"
|
10
9
|
|
11
10
|
add_internal_facet :class_crc
|
@@ -106,7 +106,7 @@ describe "ThinkingSphinx::ActiveRecord::Delta" do
|
|
106
106
|
|
107
107
|
it "should call indexer for the delta index" do
|
108
108
|
Person.sphinx_indexes.first.delta_object.should_receive(:`).with(
|
109
|
-
"#{ThinkingSphinx::Configuration.instance.bin_path}indexer --config #{ThinkingSphinx::Configuration.instance.config_file} --rotate person_delta"
|
109
|
+
"#{ThinkingSphinx::Configuration.instance.bin_path}indexer --config '#{ThinkingSphinx::Configuration.instance.config_file}' --rotate person_delta"
|
110
110
|
)
|
111
111
|
|
112
112
|
@person.send(:index_delta)
|
@@ -149,7 +149,7 @@ describe ThinkingSphinx::ActiveRecord do
|
|
149
149
|
Beta.should_receive(:before_save).with(:toggle_delta).once
|
150
150
|
|
151
151
|
Beta.define_index { indexes :name }
|
152
|
-
Beta.define_index {
|
152
|
+
Beta.define_index('foo') {
|
153
153
|
indexes :name
|
154
154
|
set_property :delta => true
|
155
155
|
}
|
@@ -193,7 +193,7 @@ describe ThinkingSphinx::ActiveRecord do
|
|
193
193
|
Beta.should_receive(:after_commit).with(:index_delta).once
|
194
194
|
|
195
195
|
Beta.define_index { indexes :name }
|
196
|
-
Beta.define_index {
|
196
|
+
Beta.define_index('foo') {
|
197
197
|
indexes :name
|
198
198
|
set_property :delta => true
|
199
199
|
}
|
@@ -541,11 +541,9 @@ describe ThinkingSphinx::ActiveRecord do
|
|
541
541
|
|
542
542
|
describe '.core_index_names' do
|
543
543
|
it "should return each index's core name" do
|
544
|
-
Alpha.define_index { indexes :name }
|
545
|
-
Alpha.define_index { indexes :name }
|
544
|
+
Alpha.define_index('foo') { indexes :name }
|
545
|
+
Alpha.define_index('bar') { indexes :name }
|
546
546
|
Alpha.define_indexes
|
547
|
-
Alpha.sphinx_indexes.first.name = 'foo'
|
548
|
-
Alpha.sphinx_indexes.last.name = 'bar'
|
549
547
|
|
550
548
|
Alpha.core_index_names.should == ['foo_core', 'bar_core']
|
551
549
|
end
|
@@ -553,12 +551,10 @@ describe ThinkingSphinx::ActiveRecord do
|
|
553
551
|
|
554
552
|
describe '.delta_index_names' do
|
555
553
|
it "should return index delta names, for indexes with deltas enabled" do
|
556
|
-
Alpha.define_index { indexes :name }
|
557
|
-
Alpha.define_index { indexes :name }
|
554
|
+
Alpha.define_index('foo') { indexes :name }
|
555
|
+
Alpha.define_index('bar') { indexes :name }
|
558
556
|
Alpha.define_indexes
|
559
|
-
Alpha.sphinx_indexes.first.name = 'foo'
|
560
557
|
Alpha.sphinx_indexes.first.delta_object = stub('delta')
|
561
|
-
Alpha.sphinx_indexes.last.name = 'bar'
|
562
558
|
|
563
559
|
Alpha.delta_index_names.should == ['foo_delta']
|
564
560
|
end
|
@@ -31,10 +31,10 @@ describe ThinkingSphinx::Index::Builder do
|
|
31
31
|
@source.fields[1].unique_name.should == :last_name
|
32
32
|
end
|
33
33
|
|
34
|
-
it "should have two attributes alongside the
|
35
|
-
@source.attributes.length.should ==
|
36
|
-
@source.attributes[
|
37
|
-
@source.attributes[
|
34
|
+
it "should have two attributes alongside the three internal ones" do
|
35
|
+
@source.attributes.length.should == 5
|
36
|
+
@source.attributes[3].unique_name.should == :birthday
|
37
|
+
@source.attributes[4].unique_name.should == :internal_id
|
38
38
|
end
|
39
39
|
|
40
40
|
it "should have one condition" do
|
@@ -95,8 +95,8 @@ describe ThinkingSphinx::Index::Builder do
|
|
95
95
|
@source.fields.length.should == 1
|
96
96
|
end
|
97
97
|
|
98
|
-
it "should have one attribute alongside the
|
99
|
-
@source.attributes.length.should ==
|
98
|
+
it "should have one attribute alongside the three internal ones" do
|
99
|
+
@source.attributes.length.should == 4
|
100
100
|
end
|
101
101
|
|
102
102
|
it "should set the attribute name to have the _sort suffix" do
|
@@ -126,8 +126,8 @@ describe ThinkingSphinx::Index::Builder do
|
|
126
126
|
@source.fields.length.should == 1
|
127
127
|
end
|
128
128
|
|
129
|
-
it "should have one attribute alongside the
|
130
|
-
@source.attributes.length.should ==
|
129
|
+
it "should have one attribute alongside the three internal ones" do
|
130
|
+
@source.attributes.length.should == 4
|
131
131
|
end
|
132
132
|
|
133
133
|
it "should set the attribute name to have the _facet suffix" do
|
@@ -158,8 +158,8 @@ describe ThinkingSphinx::Index::Builder do
|
|
158
158
|
Alpha.sphinx_facets.delete_at(-1)
|
159
159
|
end
|
160
160
|
|
161
|
-
it "should have just one attribute alongside the
|
162
|
-
@source.attributes.length.should ==
|
161
|
+
it "should have just one attribute alongside the three internal ones" do
|
162
|
+
@source.attributes.length.should == 4
|
163
163
|
end
|
164
164
|
end
|
165
165
|
|
@@ -177,8 +177,8 @@ describe ThinkingSphinx::Index::Builder do
|
|
177
177
|
Person.sphinx_facets.delete_at(-1)
|
178
178
|
end
|
179
179
|
|
180
|
-
it "should have just one attribute alongside the
|
181
|
-
@source.attributes.length.should ==
|
180
|
+
it "should have just one attribute alongside the three internal ones" do
|
181
|
+
@source.attributes.length.should == 4
|
182
182
|
end
|
183
183
|
end
|
184
184
|
|
@@ -196,8 +196,8 @@ describe ThinkingSphinx::Index::Builder do
|
|
196
196
|
Beta.sphinx_facets.delete_at(-1)
|
197
197
|
end
|
198
198
|
|
199
|
-
it "should have just one attribute alongside the
|
200
|
-
@source.attributes.length.should ==
|
199
|
+
it "should have just one attribute alongside the three internal ones" do
|
200
|
+
@source.attributes.length.should == 4
|
201
201
|
end
|
202
202
|
end
|
203
203
|
|
@@ -215,8 +215,8 @@ describe ThinkingSphinx::Index::Builder do
|
|
215
215
|
Alpha.sphinx_facets.delete_at(-1)
|
216
216
|
end
|
217
217
|
|
218
|
-
it "should have just one attribute alongside the
|
219
|
-
@source.attributes.length.should ==
|
218
|
+
it "should have just one attribute alongside the three internal ones" do
|
219
|
+
@source.attributes.length.should == 4
|
220
220
|
end
|
221
221
|
end
|
222
222
|
|
@@ -234,8 +234,8 @@ describe ThinkingSphinx::Index::Builder do
|
|
234
234
|
Person.sphinx_facets.delete_at(-1)
|
235
235
|
end
|
236
236
|
|
237
|
-
it "should have two attributes alongside the
|
238
|
-
@source.attributes.length.should ==
|
237
|
+
it "should have two attributes alongside the three internal ones" do
|
238
|
+
@source.attributes.length.should == 5
|
239
239
|
end
|
240
240
|
|
241
241
|
it "should set the facet attribute name to have the _facet suffix" do
|
@@ -266,8 +266,8 @@ describe ThinkingSphinx::Index::Builder do
|
|
266
266
|
Person.sphinx_facets.delete_at(-1)
|
267
267
|
end
|
268
268
|
|
269
|
-
it "should have two attributes alongside the
|
270
|
-
@source.attributes.length.should ==
|
269
|
+
it "should have two attributes alongside the three internal ones" do
|
270
|
+
@source.attributes.length.should == 5
|
271
271
|
end
|
272
272
|
|
273
273
|
it "should set the facet attribute name to have the _facet suffix" do
|
@@ -305,8 +305,8 @@ describe ThinkingSphinx::Index::Builder do
|
|
305
305
|
@source.fields.length.should == 1
|
306
306
|
end
|
307
307
|
|
308
|
-
it "should have one attribute alongside the
|
309
|
-
@source.attributes.length.should ==
|
308
|
+
it "should have one attribute alongside the three internal ones" do
|
309
|
+
@source.attributes.length.should == 4
|
310
310
|
end
|
311
311
|
|
312
312
|
it "should set the attribute name to have the _facet suffix" do
|
@@ -365,10 +365,10 @@ describe ThinkingSphinx::Index::Builder do
|
|
365
365
|
@source.fields[1].unique_name.should == :last_name
|
366
366
|
end
|
367
367
|
|
368
|
-
it "should have two attributes alongside the
|
369
|
-
@source.attributes.length.should ==
|
370
|
-
@source.attributes[
|
371
|
-
@source.attributes[
|
368
|
+
it "should have two attributes alongside the three internal ones" do
|
369
|
+
@source.attributes.length.should == 5
|
370
|
+
@source.attributes[3].unique_name.should == :birthday
|
371
|
+
@source.attributes[4].unique_name.should == :internal_id
|
372
372
|
end
|
373
373
|
end
|
374
374
|
|
@@ -401,13 +401,13 @@ describe ThinkingSphinx::Index::Builder do
|
|
401
401
|
end
|
402
402
|
end
|
403
403
|
|
404
|
-
it "should have two attributes alongside the
|
405
|
-
@index.attributes.length.should ==
|
404
|
+
it "should have two attributes alongside the six internal ones" do
|
405
|
+
@index.attributes.length.should == 8
|
406
406
|
end
|
407
407
|
|
408
|
-
it "should have one attribute in each source alongside the
|
408
|
+
it "should have one attribute in each source alongside the three internal ones" do
|
409
409
|
@index.sources.each do |source|
|
410
|
-
source.attributes.length.should ==
|
410
|
+
source.attributes.length.should == 4
|
411
411
|
end
|
412
412
|
end
|
413
413
|
end
|
@@ -16,6 +16,22 @@ describe ThinkingSphinx do
|
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
|
+
describe '.set_context' do
|
20
|
+
before :each do
|
21
|
+
ThinkingSphinx.reset_context!
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should set the context instance" do
|
25
|
+
ThinkingSphinx.set_context
|
26
|
+
ThinkingSphinx.context.should be_a(ThinkingSphinx::Context)
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should pass through any given arguments to the initialiser" do
|
30
|
+
ThinkingSphinx::Context.should_receive(:new).with(Alpha, Beta)
|
31
|
+
ThinkingSphinx.set_context Alpha, Beta
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
19
35
|
describe '.reset_context!' do
|
20
36
|
it "should remove the existing Context instance" do
|
21
37
|
existing = ThinkingSphinx.context
|
@@ -27,6 +43,17 @@ describe ThinkingSphinx do
|
|
27
43
|
end
|
28
44
|
end
|
29
45
|
|
46
|
+
describe '.indexed_models=' do
|
47
|
+
before :each do
|
48
|
+
ThinkingSphinx.reset_context!
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should set the indexed models for the context" do
|
52
|
+
ThinkingSphinx.indexed_models = [Alpha, Beta]
|
53
|
+
ThinkingSphinx.context.indexed_models.should == ['Alpha', 'Beta']
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
30
57
|
describe '.define_indexes?' do
|
31
58
|
it "should define indexes by default" do
|
32
59
|
ThinkingSphinx.define_indexes?.should be_true
|
data/tasks/distribution.rb
CHANGED
@@ -31,6 +31,13 @@ Jeweler::Tasks.new do |gem|
|
|
31
31
|
gem.add_dependency 'riddle', '>= 1.0.10'
|
32
32
|
gem.add_dependency 'after_commit', '>= 1.0.6'
|
33
33
|
|
34
|
+
gem.add_development_dependency "yard", ">= 0"
|
35
|
+
gem.add_development_dependency "rspec", ">= 1.2.9"
|
36
|
+
gem.add_development_dependency "cucumber", ">= 0"
|
37
|
+
gem.add_development_dependency "will_paginate", "2.3.11"
|
38
|
+
gem.add_development_dependency "ginger", "1.2.0"
|
39
|
+
gem.add_development_dependency "faker", "0.3.1"
|
40
|
+
|
34
41
|
gem.post_install_message = <<-MESSAGE
|
35
42
|
If you're upgrading, you should read this:
|
36
43
|
http://freelancing-god.github.com/ts/en/upgrading.html
|
data/tasks/testing.rb
CHANGED
@@ -7,6 +7,7 @@ Spec::Rake::SpecTask.new do |t|
|
|
7
7
|
t.spec_files = FileList['spec/**/*_spec.rb']
|
8
8
|
t.spec_opts << "-c"
|
9
9
|
end
|
10
|
+
task :spec => :check_dependencies
|
10
11
|
|
11
12
|
desc "Run all feature-set configurations"
|
12
13
|
task :features do |t|
|
@@ -26,6 +27,9 @@ namespace :features do
|
|
26
27
|
|
27
28
|
add_task :mysql, "Run feature-set against MySQL"
|
28
29
|
add_task :postgresql, "Run feature-set against PostgreSQL"
|
30
|
+
|
31
|
+
task :mysql => :check_dependencies
|
32
|
+
task :postgresql => :check_dependencies
|
29
33
|
end
|
30
34
|
|
31
35
|
desc "Generate RCov reports"
|
metadata
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: thinking-sphinx
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 1
|
7
|
+
- 3
|
8
|
+
- 17
|
9
|
+
version: 1.3.17
|
5
10
|
platform: ruby
|
6
11
|
authors:
|
7
12
|
- Pat Allan
|
@@ -9,39 +14,131 @@ autorequire:
|
|
9
14
|
bindir: bin
|
10
15
|
cert_chain: []
|
11
16
|
|
12
|
-
date: 2010-
|
17
|
+
date: 2010-06-05 00:00:00 +10:00
|
13
18
|
default_executable:
|
14
19
|
dependencies:
|
15
20
|
- !ruby/object:Gem::Dependency
|
16
21
|
name: activerecord
|
17
|
-
|
18
|
-
|
19
|
-
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
20
24
|
requirements:
|
21
25
|
- - ">="
|
22
26
|
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 1
|
29
|
+
- 15
|
30
|
+
- 6
|
23
31
|
version: 1.15.6
|
24
|
-
|
32
|
+
type: :runtime
|
33
|
+
version_requirements: *id001
|
25
34
|
- !ruby/object:Gem::Dependency
|
26
35
|
name: riddle
|
27
|
-
|
28
|
-
|
29
|
-
version_requirements: !ruby/object:Gem::Requirement
|
36
|
+
prerelease: false
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
30
38
|
requirements:
|
31
39
|
- - ">="
|
32
40
|
- !ruby/object:Gem::Version
|
41
|
+
segments:
|
42
|
+
- 1
|
43
|
+
- 0
|
44
|
+
- 10
|
33
45
|
version: 1.0.10
|
34
|
-
|
46
|
+
type: :runtime
|
47
|
+
version_requirements: *id002
|
35
48
|
- !ruby/object:Gem::Dependency
|
36
49
|
name: after_commit
|
37
|
-
|
38
|
-
|
39
|
-
version_requirements: !ruby/object:Gem::Requirement
|
50
|
+
prerelease: false
|
51
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
40
52
|
requirements:
|
41
53
|
- - ">="
|
42
54
|
- !ruby/object:Gem::Version
|
55
|
+
segments:
|
56
|
+
- 1
|
57
|
+
- 0
|
58
|
+
- 6
|
43
59
|
version: 1.0.6
|
44
|
-
|
60
|
+
type: :runtime
|
61
|
+
version_requirements: *id003
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: yard
|
64
|
+
prerelease: false
|
65
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
segments:
|
70
|
+
- 0
|
71
|
+
version: "0"
|
72
|
+
type: :development
|
73
|
+
version_requirements: *id004
|
74
|
+
- !ruby/object:Gem::Dependency
|
75
|
+
name: rspec
|
76
|
+
prerelease: false
|
77
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - ">="
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
segments:
|
82
|
+
- 1
|
83
|
+
- 2
|
84
|
+
- 9
|
85
|
+
version: 1.2.9
|
86
|
+
type: :development
|
87
|
+
version_requirements: *id005
|
88
|
+
- !ruby/object:Gem::Dependency
|
89
|
+
name: cucumber
|
90
|
+
prerelease: false
|
91
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - ">="
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
segments:
|
96
|
+
- 0
|
97
|
+
version: "0"
|
98
|
+
type: :development
|
99
|
+
version_requirements: *id006
|
100
|
+
- !ruby/object:Gem::Dependency
|
101
|
+
name: will_paginate
|
102
|
+
prerelease: false
|
103
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
104
|
+
requirements:
|
105
|
+
- - "="
|
106
|
+
- !ruby/object:Gem::Version
|
107
|
+
segments:
|
108
|
+
- 2
|
109
|
+
- 3
|
110
|
+
- 11
|
111
|
+
version: 2.3.11
|
112
|
+
type: :development
|
113
|
+
version_requirements: *id007
|
114
|
+
- !ruby/object:Gem::Dependency
|
115
|
+
name: ginger
|
116
|
+
prerelease: false
|
117
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
118
|
+
requirements:
|
119
|
+
- - "="
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
segments:
|
122
|
+
- 1
|
123
|
+
- 2
|
124
|
+
- 0
|
125
|
+
version: 1.2.0
|
126
|
+
type: :development
|
127
|
+
version_requirements: *id008
|
128
|
+
- !ruby/object:Gem::Dependency
|
129
|
+
name: faker
|
130
|
+
prerelease: false
|
131
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
132
|
+
requirements:
|
133
|
+
- - "="
|
134
|
+
- !ruby/object:Gem::Version
|
135
|
+
segments:
|
136
|
+
- 0
|
137
|
+
- 3
|
138
|
+
- 1
|
139
|
+
version: 0.3.1
|
140
|
+
type: :development
|
141
|
+
version_requirements: *id009
|
45
142
|
description: A concise and easy-to-use Ruby library that connects ActiveRecord to the Sphinx search daemon, managing configuration, indexing and searching.
|
46
143
|
email: pat@freelancing-gods.com
|
47
144
|
executables: []
|
@@ -113,18 +210,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
113
210
|
requirements:
|
114
211
|
- - ">="
|
115
212
|
- !ruby/object:Gem::Version
|
213
|
+
segments:
|
214
|
+
- 0
|
116
215
|
version: "0"
|
117
|
-
version:
|
118
216
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
119
217
|
requirements:
|
120
218
|
- - ">="
|
121
219
|
- !ruby/object:Gem::Version
|
220
|
+
segments:
|
221
|
+
- 0
|
122
222
|
version: "0"
|
123
|
-
version:
|
124
223
|
requirements: []
|
125
224
|
|
126
225
|
rubyforge_project:
|
127
|
-
rubygems_version: 1.3.
|
226
|
+
rubygems_version: 1.3.6
|
128
227
|
signing_key:
|
129
228
|
specification_version: 3
|
130
229
|
summary: ActiveRecord/Rails Sphinx library
|
@@ -158,66 +257,66 @@ test_files:
|
|
158
257
|
- features/step_definitions/search_steps.rb
|
159
258
|
- features/step_definitions/sphinx_steps.rb
|
160
259
|
- features/sti_searching.feature
|
161
|
-
- features/support/database.example.yml
|
162
|
-
- features/support/database.yml
|
163
|
-
- features/support/db/fixtures/alphas.rb
|
164
|
-
- features/support/db/fixtures/authors.rb
|
165
|
-
- features/support/db/fixtures/betas.rb
|
166
|
-
- features/support/db/fixtures/boxes.rb
|
167
|
-
- features/support/db/fixtures/categories.rb
|
168
|
-
- features/support/db/fixtures/cats.rb
|
169
|
-
- features/support/db/fixtures/comments.rb
|
170
|
-
- features/support/db/fixtures/developers.rb
|
171
|
-
- features/support/db/fixtures/dogs.rb
|
172
|
-
- features/support/db/fixtures/extensible_betas.rb
|
173
|
-
- features/support/db/fixtures/foxes.rb
|
174
|
-
- features/support/db/fixtures/gammas.rb
|
175
|
-
- features/support/db/fixtures/music.rb
|
176
|
-
- features/support/db/fixtures/people.rb
|
177
|
-
- features/support/db/fixtures/posts.rb
|
178
|
-
- features/support/db/fixtures/robots.rb
|
179
|
-
- features/support/db/fixtures/tags.rb
|
180
|
-
- features/support/db/migrations/create_alphas.rb
|
181
|
-
- features/support/db/migrations/create_animals.rb
|
182
|
-
- features/support/db/migrations/create_authors.rb
|
183
|
-
- features/support/db/migrations/create_authors_posts.rb
|
184
|
-
- features/support/db/migrations/create_betas.rb
|
185
|
-
- features/support/db/migrations/create_boxes.rb
|
186
|
-
- features/support/db/migrations/create_categories.rb
|
187
|
-
- features/support/db/migrations/create_comments.rb
|
188
|
-
- features/support/db/migrations/create_developers.rb
|
189
|
-
- features/support/db/migrations/create_extensible_betas.rb
|
190
|
-
- features/support/db/migrations/create_gammas.rb
|
191
|
-
- features/support/db/migrations/create_genres.rb
|
192
|
-
- features/support/db/migrations/create_music.rb
|
193
|
-
- features/support/db/migrations/create_people.rb
|
194
|
-
- features/support/db/migrations/create_posts.rb
|
195
|
-
- features/support/db/migrations/create_robots.rb
|
196
|
-
- features/support/db/migrations/create_taggings.rb
|
197
|
-
- features/support/db/migrations/create_tags.rb
|
198
260
|
- features/support/env.rb
|
199
261
|
- features/support/lib/generic_delta_handler.rb
|
200
|
-
- features/
|
201
|
-
- features/
|
202
|
-
- features/
|
203
|
-
- features/
|
204
|
-
- features/
|
205
|
-
- features/
|
206
|
-
- features/
|
207
|
-
- features/
|
208
|
-
- features/
|
209
|
-
- features/
|
210
|
-
- features/
|
211
|
-
- features/
|
212
|
-
- features/
|
213
|
-
- features/
|
214
|
-
- features/
|
215
|
-
- features/
|
216
|
-
- features/
|
217
|
-
- features/
|
218
|
-
- features/
|
219
|
-
- features/
|
220
|
-
- features/
|
262
|
+
- features/thinking_sphinx/database.example.yml
|
263
|
+
- features/thinking_sphinx/database.yml
|
264
|
+
- features/thinking_sphinx/db/fixtures/alphas.rb
|
265
|
+
- features/thinking_sphinx/db/fixtures/authors.rb
|
266
|
+
- features/thinking_sphinx/db/fixtures/betas.rb
|
267
|
+
- features/thinking_sphinx/db/fixtures/boxes.rb
|
268
|
+
- features/thinking_sphinx/db/fixtures/categories.rb
|
269
|
+
- features/thinking_sphinx/db/fixtures/cats.rb
|
270
|
+
- features/thinking_sphinx/db/fixtures/comments.rb
|
271
|
+
- features/thinking_sphinx/db/fixtures/developers.rb
|
272
|
+
- features/thinking_sphinx/db/fixtures/dogs.rb
|
273
|
+
- features/thinking_sphinx/db/fixtures/extensible_betas.rb
|
274
|
+
- features/thinking_sphinx/db/fixtures/foxes.rb
|
275
|
+
- features/thinking_sphinx/db/fixtures/gammas.rb
|
276
|
+
- features/thinking_sphinx/db/fixtures/music.rb
|
277
|
+
- features/thinking_sphinx/db/fixtures/people.rb
|
278
|
+
- features/thinking_sphinx/db/fixtures/posts.rb
|
279
|
+
- features/thinking_sphinx/db/fixtures/robots.rb
|
280
|
+
- features/thinking_sphinx/db/fixtures/tags.rb
|
281
|
+
- features/thinking_sphinx/db/migrations/create_alphas.rb
|
282
|
+
- features/thinking_sphinx/db/migrations/create_animals.rb
|
283
|
+
- features/thinking_sphinx/db/migrations/create_authors.rb
|
284
|
+
- features/thinking_sphinx/db/migrations/create_authors_posts.rb
|
285
|
+
- features/thinking_sphinx/db/migrations/create_betas.rb
|
286
|
+
- features/thinking_sphinx/db/migrations/create_boxes.rb
|
287
|
+
- features/thinking_sphinx/db/migrations/create_categories.rb
|
288
|
+
- features/thinking_sphinx/db/migrations/create_comments.rb
|
289
|
+
- features/thinking_sphinx/db/migrations/create_developers.rb
|
290
|
+
- features/thinking_sphinx/db/migrations/create_extensible_betas.rb
|
291
|
+
- features/thinking_sphinx/db/migrations/create_gammas.rb
|
292
|
+
- features/thinking_sphinx/db/migrations/create_genres.rb
|
293
|
+
- features/thinking_sphinx/db/migrations/create_music.rb
|
294
|
+
- features/thinking_sphinx/db/migrations/create_people.rb
|
295
|
+
- features/thinking_sphinx/db/migrations/create_posts.rb
|
296
|
+
- features/thinking_sphinx/db/migrations/create_robots.rb
|
297
|
+
- features/thinking_sphinx/db/migrations/create_taggings.rb
|
298
|
+
- features/thinking_sphinx/db/migrations/create_tags.rb
|
299
|
+
- features/thinking_sphinx/models/alpha.rb
|
300
|
+
- features/thinking_sphinx/models/animal.rb
|
301
|
+
- features/thinking_sphinx/models/author.rb
|
302
|
+
- features/thinking_sphinx/models/beta.rb
|
303
|
+
- features/thinking_sphinx/models/box.rb
|
304
|
+
- features/thinking_sphinx/models/cat.rb
|
305
|
+
- features/thinking_sphinx/models/category.rb
|
306
|
+
- features/thinking_sphinx/models/comment.rb
|
307
|
+
- features/thinking_sphinx/models/developer.rb
|
308
|
+
- features/thinking_sphinx/models/dog.rb
|
309
|
+
- features/thinking_sphinx/models/extensible_beta.rb
|
310
|
+
- features/thinking_sphinx/models/fox.rb
|
311
|
+
- features/thinking_sphinx/models/gamma.rb
|
312
|
+
- features/thinking_sphinx/models/genre.rb
|
313
|
+
- features/thinking_sphinx/models/medium.rb
|
314
|
+
- features/thinking_sphinx/models/music.rb
|
315
|
+
- features/thinking_sphinx/models/person.rb
|
316
|
+
- features/thinking_sphinx/models/post.rb
|
317
|
+
- features/thinking_sphinx/models/robot.rb
|
318
|
+
- features/thinking_sphinx/models/tag.rb
|
319
|
+
- features/thinking_sphinx/models/tagging.rb
|
221
320
|
- spec/thinking_sphinx/active_record/delta_spec.rb
|
222
321
|
- spec/thinking_sphinx/active_record/has_many_association_spec.rb
|
223
322
|
- spec/thinking_sphinx/active_record/scopes_spec.rb
|