thinking-sphinx 5.5.1 → 6.0.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.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +34 -89
- data/Appraisals +24 -0
- data/CHANGELOG.markdown +30 -0
- data/Gemfile +1 -0
- data/README.textile +26 -11
- data/bin/loadsphinx +15 -4
- data/bin/testmatrix +48 -0
- data/lib/thinking_sphinx/active_record/base.rb +23 -4
- data/lib/thinking_sphinx/active_record/filter_reflection.rb +1 -1
- data/lib/thinking_sphinx/active_record/log_subscriber.rb +16 -4
- data/lib/thinking_sphinx/commands/clear_real_time.rb +1 -1
- data/lib/thinking_sphinx/commands/clear_sql.rb +1 -1
- data/lib/thinking_sphinx/configuration/minimum_fields.rb +8 -8
- data/lib/thinking_sphinx/masks/scopes_mask.rb +6 -0
- data/lib/thinking_sphinx/processor.rb +34 -8
- data/lib/thinking_sphinx/search/context.rb +1 -0
- data/lib/thinking_sphinx/search.rb +2 -2
- data/lib/thinking_sphinx/test.rb +1 -1
- data/lib/thinking_sphinx.rb +4 -0
- data/spec/acceptance/attribute_access_spec.rb +4 -4
- data/spec/acceptance/excerpts_spec.rb +2 -2
- data/spec/acceptance/grouping_by_attributes_spec.rb +20 -20
- data/spec/acceptance/real_time_updates_spec.rb +61 -1
- data/spec/acceptance/searching_across_models_spec.rb +7 -0
- data/spec/acceptance/searching_with_filters_spec.rb +8 -8
- data/spec/acceptance/searching_within_a_model_spec.rb +14 -0
- data/spec/acceptance/sorting_search_results_spec.rb +15 -15
- data/spec/acceptance/sphinx_scopes_spec.rb +23 -16
- data/spec/internal/app/indices/article_index.rb +6 -0
- data/spec/internal/app/indices/book_index.rb +1 -1
- data/spec/internal/app/models/book.rb +5 -5
- data/spec/internal/db/schema.rb +1 -1
- data/spec/spec_helper.rb +1 -0
- data/spec/thinking_sphinx/active_record/callbacks/update_callbacks_spec.rb +1 -1
- data/spec/thinking_sphinx/active_record/interpreter_spec.rb +5 -5
- data/spec/thinking_sphinx/commands/clear_real_time_spec.rb +2 -2
- data/spec/thinking_sphinx/commands/clear_sql_spec.rb +2 -2
- data/spec/thinking_sphinx/configuration/minimum_fields_spec.rb +12 -2
- data/spec/thinking_sphinx/excerpter_spec.rb +3 -2
- data/spec/thinking_sphinx/index_spec.rb +2 -2
- data/spec/thinking_sphinx/middlewares/sphinxql_spec.rb +4 -4
- data/spec/thinking_sphinx/panes/excerpts_pane_spec.rb +1 -1
- data/spec/thinking_sphinx/real_time/interpreter_spec.rb +5 -5
- data/spec/thinking_sphinx_spec.rb +2 -2
- data/thinking-sphinx.gemspec +14 -8
- metadata +23 -31
|
@@ -61,7 +61,7 @@ describe ThinkingSphinx::Middlewares::SphinxQL do
|
|
|
61
61
|
allow(index_set.first).to receive_messages :reference => :user
|
|
62
62
|
|
|
63
63
|
expect(set_class).to receive(:new).
|
|
64
|
-
with(:classes => [klass], :indices => ['user_core']).
|
|
64
|
+
with({ :classes => [klass], :indices => ['user_core'] }).
|
|
65
65
|
and_return(index_set)
|
|
66
66
|
|
|
67
67
|
middleware.call [context]
|
|
@@ -215,7 +215,7 @@ describe ThinkingSphinx::Middlewares::SphinxQL do
|
|
|
215
215
|
end
|
|
216
216
|
|
|
217
217
|
it "filters out deleted values by default" do
|
|
218
|
-
expect(sphinx_sql).to receive(:where).with(:sphinx_deleted => false).
|
|
218
|
+
expect(sphinx_sql).to receive(:where).with({ :sphinx_deleted => false }).
|
|
219
219
|
and_return(sphinx_sql)
|
|
220
220
|
|
|
221
221
|
middleware.call [context]
|
|
@@ -253,7 +253,7 @@ describe ThinkingSphinx::Middlewares::SphinxQL do
|
|
|
253
253
|
search.options[:with_all] = {:tag_ids => [1, 7]}
|
|
254
254
|
|
|
255
255
|
expect(sphinx_sql).to receive(:where_all).
|
|
256
|
-
with(:tag_ids => [1, 7]).and_return(sphinx_sql)
|
|
256
|
+
with({ :tag_ids => [1, 7] }).and_return(sphinx_sql)
|
|
257
257
|
|
|
258
258
|
middleware.call [context]
|
|
259
259
|
end
|
|
@@ -262,7 +262,7 @@ describe ThinkingSphinx::Middlewares::SphinxQL do
|
|
|
262
262
|
search.options[:without_all] = {:tag_ids => [1, 7]}
|
|
263
263
|
|
|
264
264
|
expect(sphinx_sql).to receive(:where_not_all).
|
|
265
|
-
with(:tag_ids => [1, 7]).and_return(sphinx_sql)
|
|
265
|
+
with({ :tag_ids => [1, 7] }).and_return(sphinx_sql)
|
|
266
266
|
|
|
267
267
|
middleware.call [context]
|
|
268
268
|
end
|
|
@@ -45,7 +45,7 @@ describe ThinkingSphinx::Panes::ExcerptsPane do
|
|
|
45
45
|
search.options[:excerpts] = {:before_match => 'foo'}
|
|
46
46
|
|
|
47
47
|
expect(ThinkingSphinx::Excerpter).to receive(:new).
|
|
48
|
-
with(anything, anything, :before_match => 'foo').and_return(excerpter)
|
|
48
|
+
with(anything, anything, { :before_match => 'foo' }).and_return(excerpter)
|
|
49
49
|
|
|
50
50
|
pane.excerpts
|
|
51
51
|
end
|
|
@@ -49,7 +49,7 @@ describe ThinkingSphinx::RealTime::Interpreter do
|
|
|
49
49
|
|
|
50
50
|
it "passes through options to the attribute" do
|
|
51
51
|
expect(ThinkingSphinx::RealTime::Attribute).to receive(:new).
|
|
52
|
-
with(column, :as => :other_name).and_return(attribute)
|
|
52
|
+
with(column, { :as => :other_name }).and_return(attribute)
|
|
53
53
|
|
|
54
54
|
instance.has column, :as => :other_name
|
|
55
55
|
end
|
|
@@ -84,7 +84,7 @@ describe ThinkingSphinx::RealTime::Interpreter do
|
|
|
84
84
|
|
|
85
85
|
it "passes through options to the field" do
|
|
86
86
|
expect(ThinkingSphinx::RealTime::Field).to receive(:new).
|
|
87
|
-
with(column, :as => :other_name).and_return(field)
|
|
87
|
+
with(column, { :as => :other_name }).and_return(field)
|
|
88
88
|
|
|
89
89
|
instance.indexes column, :as => :other_name
|
|
90
90
|
end
|
|
@@ -112,7 +112,7 @@ describe ThinkingSphinx::RealTime::Interpreter do
|
|
|
112
112
|
|
|
113
113
|
it "adds the _sort suffix to the field's name" do
|
|
114
114
|
expect(ThinkingSphinx::RealTime::Attribute).to receive(:new).
|
|
115
|
-
with(column, :as => :col_sort, :type => :string).
|
|
115
|
+
with(column, { :as => :col_sort, :type => :string }).
|
|
116
116
|
and_return(attribute)
|
|
117
117
|
|
|
118
118
|
instance.indexes column, :sortable => true
|
|
@@ -120,7 +120,7 @@ describe ThinkingSphinx::RealTime::Interpreter do
|
|
|
120
120
|
|
|
121
121
|
it "respects given aliases" do
|
|
122
122
|
expect(ThinkingSphinx::RealTime::Attribute).to receive(:new).
|
|
123
|
-
with(column, :as => :other_sort, :type => :string).
|
|
123
|
+
with(column, { :as => :other_sort, :type => :string }).
|
|
124
124
|
and_return(attribute)
|
|
125
125
|
|
|
126
126
|
instance.indexes column, :sortable => true, :as => :other
|
|
@@ -128,7 +128,7 @@ describe ThinkingSphinx::RealTime::Interpreter do
|
|
|
128
128
|
|
|
129
129
|
it "respects symbols instead of columns" do
|
|
130
130
|
expect(ThinkingSphinx::RealTime::Attribute).to receive(:new).
|
|
131
|
-
with(:title, :as => :title_sort, :type => :string).
|
|
131
|
+
with(:title, { :as => :title_sort, :type => :string }).
|
|
132
132
|
and_return(attribute)
|
|
133
133
|
|
|
134
134
|
instance.indexes :title, :sortable => true
|
|
@@ -16,7 +16,7 @@ describe ThinkingSphinx do
|
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
it "passes through the given query and options" do
|
|
19
|
-
expect(ThinkingSphinx::Search).to receive(:new).with('foo', :bar => :baz).
|
|
19
|
+
expect(ThinkingSphinx::Search).to receive(:new).with('foo', { :bar => :baz }).
|
|
20
20
|
and_return(search)
|
|
21
21
|
|
|
22
22
|
ThinkingSphinx.count('foo', :bar => :baz)
|
|
@@ -35,7 +35,7 @@ describe ThinkingSphinx do
|
|
|
35
35
|
end
|
|
36
36
|
|
|
37
37
|
it "passes through the given query and options" do
|
|
38
|
-
expect(ThinkingSphinx::Search).to receive(:new).with('foo', :bar => :baz).
|
|
38
|
+
expect(ThinkingSphinx::Search).to receive(:new).with('foo', { :bar => :baz }).
|
|
39
39
|
and_return(search)
|
|
40
40
|
|
|
41
41
|
ThinkingSphinx.search('foo', :bar => :baz)
|
data/thinking-sphinx.gemspec
CHANGED
|
@@ -5,7 +5,7 @@ $:.push File.expand_path('../lib', __FILE__)
|
|
|
5
5
|
|
|
6
6
|
Gem::Specification.new do |s|
|
|
7
7
|
s.name = 'thinking-sphinx'
|
|
8
|
-
s.version = '
|
|
8
|
+
s.version = '6.0.0'
|
|
9
9
|
s.platform = Gem::Platform::RUBY
|
|
10
10
|
s.authors = ["Pat Allan"]
|
|
11
11
|
s.email = ["pat@freelancing-gods.com"]
|
|
@@ -14,6 +14,11 @@ Gem::Specification.new do |s|
|
|
|
14
14
|
s.description = %Q{An intelligent layer for ActiveRecord (via Rails and Sinatra) for the Sphinx full-text search tool.}
|
|
15
15
|
s.license = 'MIT'
|
|
16
16
|
|
|
17
|
+
s.metadata['homepage_uri'] = s.homepage
|
|
18
|
+
s.metadata['source_code_uri'] = 'https://github.com/pat/thinking-sphinx'
|
|
19
|
+
s.metadata['changelog_uri'] = 'https://github.com/pat/thinking-sphinx/blob/develop/CHANGELOG.markdown'
|
|
20
|
+
s.metadata['rubygems_mfa_required'] = 'true'
|
|
21
|
+
|
|
17
22
|
s.files = `git ls-files`.split("\n")
|
|
18
23
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
|
19
24
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f|
|
|
@@ -21,16 +26,17 @@ Gem::Specification.new do |s|
|
|
|
21
26
|
}
|
|
22
27
|
s.require_paths = ['lib']
|
|
23
28
|
|
|
24
|
-
s.
|
|
25
|
-
|
|
26
|
-
s.add_runtime_dependency '
|
|
29
|
+
s.required_ruby_version = '>= 3.0'
|
|
30
|
+
|
|
31
|
+
s.add_runtime_dependency 'activerecord', '>= 6.1.0'
|
|
32
|
+
s.add_runtime_dependency 'joiner', '>= 0.6.0'
|
|
27
33
|
s.add_runtime_dependency 'middleware', '>= 0.1.0'
|
|
28
|
-
s.add_runtime_dependency 'innertube', '>= 1.0
|
|
29
|
-
s.add_runtime_dependency 'riddle', '~> 2.
|
|
34
|
+
s.add_runtime_dependency 'innertube', '>= 1.1.0'
|
|
35
|
+
s.add_runtime_dependency 'riddle', '~> 2.4'
|
|
30
36
|
|
|
31
37
|
s.add_development_dependency 'appraisal', '~> 1.0.2'
|
|
32
38
|
s.add_development_dependency 'combustion', '~> 1.1'
|
|
33
|
-
s.add_development_dependency 'database_cleaner', '~>
|
|
34
|
-
s.add_development_dependency 'rspec', '~> 3.
|
|
39
|
+
s.add_development_dependency 'database_cleaner', '~> 2.0.2'
|
|
40
|
+
s.add_development_dependency 'rspec', '~> 3.12.0'
|
|
35
41
|
s.add_development_dependency 'rspec-retry', '~> 0.5.6'
|
|
36
42
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: thinking-sphinx
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 6.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Pat Allan
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2026-01-11 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activerecord
|
|
@@ -16,42 +16,28 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - ">="
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version:
|
|
19
|
+
version: 6.1.0
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
24
|
- - ">="
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version:
|
|
27
|
-
- !ruby/object:Gem::Dependency
|
|
28
|
-
name: builder
|
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
|
30
|
-
requirements:
|
|
31
|
-
- - ">="
|
|
32
|
-
- !ruby/object:Gem::Version
|
|
33
|
-
version: 2.1.2
|
|
34
|
-
type: :runtime
|
|
35
|
-
prerelease: false
|
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
-
requirements:
|
|
38
|
-
- - ">="
|
|
39
|
-
- !ruby/object:Gem::Version
|
|
40
|
-
version: 2.1.2
|
|
26
|
+
version: 6.1.0
|
|
41
27
|
- !ruby/object:Gem::Dependency
|
|
42
28
|
name: joiner
|
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
|
44
30
|
requirements:
|
|
45
31
|
- - ">="
|
|
46
32
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: 0.
|
|
33
|
+
version: 0.6.0
|
|
48
34
|
type: :runtime
|
|
49
35
|
prerelease: false
|
|
50
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
37
|
requirements:
|
|
52
38
|
- - ">="
|
|
53
39
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: 0.
|
|
40
|
+
version: 0.6.0
|
|
55
41
|
- !ruby/object:Gem::Dependency
|
|
56
42
|
name: middleware
|
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -72,28 +58,28 @@ dependencies:
|
|
|
72
58
|
requirements:
|
|
73
59
|
- - ">="
|
|
74
60
|
- !ruby/object:Gem::Version
|
|
75
|
-
version: 1.0
|
|
61
|
+
version: 1.1.0
|
|
76
62
|
type: :runtime
|
|
77
63
|
prerelease: false
|
|
78
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
65
|
requirements:
|
|
80
66
|
- - ">="
|
|
81
67
|
- !ruby/object:Gem::Version
|
|
82
|
-
version: 1.0
|
|
68
|
+
version: 1.1.0
|
|
83
69
|
- !ruby/object:Gem::Dependency
|
|
84
70
|
name: riddle
|
|
85
71
|
requirement: !ruby/object:Gem::Requirement
|
|
86
72
|
requirements:
|
|
87
73
|
- - "~>"
|
|
88
74
|
- !ruby/object:Gem::Version
|
|
89
|
-
version: '2.
|
|
75
|
+
version: '2.4'
|
|
90
76
|
type: :runtime
|
|
91
77
|
prerelease: false
|
|
92
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
93
79
|
requirements:
|
|
94
80
|
- - "~>"
|
|
95
81
|
- !ruby/object:Gem::Version
|
|
96
|
-
version: '2.
|
|
82
|
+
version: '2.4'
|
|
97
83
|
- !ruby/object:Gem::Dependency
|
|
98
84
|
name: appraisal
|
|
99
85
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -128,28 +114,28 @@ dependencies:
|
|
|
128
114
|
requirements:
|
|
129
115
|
- - "~>"
|
|
130
116
|
- !ruby/object:Gem::Version
|
|
131
|
-
version:
|
|
117
|
+
version: 2.0.2
|
|
132
118
|
type: :development
|
|
133
119
|
prerelease: false
|
|
134
120
|
version_requirements: !ruby/object:Gem::Requirement
|
|
135
121
|
requirements:
|
|
136
122
|
- - "~>"
|
|
137
123
|
- !ruby/object:Gem::Version
|
|
138
|
-
version:
|
|
124
|
+
version: 2.0.2
|
|
139
125
|
- !ruby/object:Gem::Dependency
|
|
140
126
|
name: rspec
|
|
141
127
|
requirement: !ruby/object:Gem::Requirement
|
|
142
128
|
requirements:
|
|
143
129
|
- - "~>"
|
|
144
130
|
- !ruby/object:Gem::Version
|
|
145
|
-
version: 3.
|
|
131
|
+
version: 3.12.0
|
|
146
132
|
type: :development
|
|
147
133
|
prerelease: false
|
|
148
134
|
version_requirements: !ruby/object:Gem::Requirement
|
|
149
135
|
requirements:
|
|
150
136
|
- - "~>"
|
|
151
137
|
- !ruby/object:Gem::Version
|
|
152
|
-
version: 3.
|
|
138
|
+
version: 3.12.0
|
|
153
139
|
- !ruby/object:Gem::Dependency
|
|
154
140
|
name: rspec-retry
|
|
155
141
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -171,6 +157,7 @@ email:
|
|
|
171
157
|
executables:
|
|
172
158
|
- console
|
|
173
159
|
- loadsphinx
|
|
160
|
+
- testmatrix
|
|
174
161
|
extensions: []
|
|
175
162
|
extra_rdoc_files: []
|
|
176
163
|
files:
|
|
@@ -188,6 +175,7 @@ files:
|
|
|
188
175
|
- Rakefile
|
|
189
176
|
- bin/console
|
|
190
177
|
- bin/loadsphinx
|
|
178
|
+
- bin/testmatrix
|
|
191
179
|
- lib/thinking-sphinx.rb
|
|
192
180
|
- lib/thinking/sphinx.rb
|
|
193
181
|
- lib/thinking_sphinx.rb
|
|
@@ -514,7 +502,11 @@ files:
|
|
|
514
502
|
homepage: https://pat.github.io/thinking-sphinx/
|
|
515
503
|
licenses:
|
|
516
504
|
- MIT
|
|
517
|
-
metadata:
|
|
505
|
+
metadata:
|
|
506
|
+
homepage_uri: https://pat.github.io/thinking-sphinx/
|
|
507
|
+
source_code_uri: https://github.com/pat/thinking-sphinx
|
|
508
|
+
changelog_uri: https://github.com/pat/thinking-sphinx/blob/develop/CHANGELOG.markdown
|
|
509
|
+
rubygems_mfa_required: 'true'
|
|
518
510
|
post_install_message:
|
|
519
511
|
rdoc_options: []
|
|
520
512
|
require_paths:
|
|
@@ -523,14 +515,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
523
515
|
requirements:
|
|
524
516
|
- - ">="
|
|
525
517
|
- !ruby/object:Gem::Version
|
|
526
|
-
version: '0'
|
|
518
|
+
version: '3.0'
|
|
527
519
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
528
520
|
requirements:
|
|
529
521
|
- - ">="
|
|
530
522
|
- !ruby/object:Gem::Version
|
|
531
523
|
version: '0'
|
|
532
524
|
requirements: []
|
|
533
|
-
rubygems_version: 3.
|
|
525
|
+
rubygems_version: 3.5.22
|
|
534
526
|
signing_key:
|
|
535
527
|
specification_version: 4
|
|
536
528
|
summary: A smart wrapper over Sphinx for ActiveRecord
|