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.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +34 -89
  3. data/Appraisals +24 -0
  4. data/CHANGELOG.markdown +30 -0
  5. data/Gemfile +1 -0
  6. data/README.textile +26 -11
  7. data/bin/loadsphinx +15 -4
  8. data/bin/testmatrix +48 -0
  9. data/lib/thinking_sphinx/active_record/base.rb +23 -4
  10. data/lib/thinking_sphinx/active_record/filter_reflection.rb +1 -1
  11. data/lib/thinking_sphinx/active_record/log_subscriber.rb +16 -4
  12. data/lib/thinking_sphinx/commands/clear_real_time.rb +1 -1
  13. data/lib/thinking_sphinx/commands/clear_sql.rb +1 -1
  14. data/lib/thinking_sphinx/configuration/minimum_fields.rb +8 -8
  15. data/lib/thinking_sphinx/masks/scopes_mask.rb +6 -0
  16. data/lib/thinking_sphinx/processor.rb +34 -8
  17. data/lib/thinking_sphinx/search/context.rb +1 -0
  18. data/lib/thinking_sphinx/search.rb +2 -2
  19. data/lib/thinking_sphinx/test.rb +1 -1
  20. data/lib/thinking_sphinx.rb +4 -0
  21. data/spec/acceptance/attribute_access_spec.rb +4 -4
  22. data/spec/acceptance/excerpts_spec.rb +2 -2
  23. data/spec/acceptance/grouping_by_attributes_spec.rb +20 -20
  24. data/spec/acceptance/real_time_updates_spec.rb +61 -1
  25. data/spec/acceptance/searching_across_models_spec.rb +7 -0
  26. data/spec/acceptance/searching_with_filters_spec.rb +8 -8
  27. data/spec/acceptance/searching_within_a_model_spec.rb +14 -0
  28. data/spec/acceptance/sorting_search_results_spec.rb +15 -15
  29. data/spec/acceptance/sphinx_scopes_spec.rb +23 -16
  30. data/spec/internal/app/indices/article_index.rb +6 -0
  31. data/spec/internal/app/indices/book_index.rb +1 -1
  32. data/spec/internal/app/models/book.rb +5 -5
  33. data/spec/internal/db/schema.rb +1 -1
  34. data/spec/spec_helper.rb +1 -0
  35. data/spec/thinking_sphinx/active_record/callbacks/update_callbacks_spec.rb +1 -1
  36. data/spec/thinking_sphinx/active_record/interpreter_spec.rb +5 -5
  37. data/spec/thinking_sphinx/commands/clear_real_time_spec.rb +2 -2
  38. data/spec/thinking_sphinx/commands/clear_sql_spec.rb +2 -2
  39. data/spec/thinking_sphinx/configuration/minimum_fields_spec.rb +12 -2
  40. data/spec/thinking_sphinx/excerpter_spec.rb +3 -2
  41. data/spec/thinking_sphinx/index_spec.rb +2 -2
  42. data/spec/thinking_sphinx/middlewares/sphinxql_spec.rb +4 -4
  43. data/spec/thinking_sphinx/panes/excerpts_pane_spec.rb +1 -1
  44. data/spec/thinking_sphinx/real_time/interpreter_spec.rb +5 -5
  45. data/spec/thinking_sphinx_spec.rb +2 -2
  46. data/thinking-sphinx.gemspec +14 -8
  47. 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)
@@ -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 = '5.5.1'
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.add_runtime_dependency 'activerecord', '>= 4.2.0'
25
- s.add_runtime_dependency 'builder', '>= 2.1.2'
26
- s.add_runtime_dependency 'joiner', '>= 0.3.4'
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.2'
29
- s.add_runtime_dependency 'riddle', '~> 2.3'
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', '~> 1.6.0'
34
- s.add_development_dependency 'rspec', '~> 3.7.0'
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: 5.5.1
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: 2022-12-31 00:00:00.000000000 Z
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: 4.2.0
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: 4.2.0
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.3.4
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.3.4
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.2
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.2
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.3'
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.3'
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: 1.6.0
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: 1.6.0
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.7.0
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.7.0
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.3.26
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