thinking-sphinx 5.2.1 → 5.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.markdown +14 -0
- data/README.textile +2 -2
- data/lib/thinking_sphinx.rb +1 -5
- data/lib/thinking_sphinx/active_record.rb +2 -0
- data/lib/thinking_sphinx/active_record/callbacks/delete_callbacks.rb +5 -1
- data/lib/thinking_sphinx/callbacks/appender.rb +7 -3
- data/lib/thinking_sphinx/railtie.rb +12 -10
- data/lib/thinking_sphinx/search/stale_ids_exception.rb +2 -1
- data/lib/thinking_sphinx/sinatra.rb +1 -1
- data/spec/acceptance/sql_deltas_spec.rb +1 -1
- data/spec/thinking_sphinx/active_record/index_spec.rb +3 -1
- data/thinking-sphinx.gemspec +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 55eace64045aea4431c8a86005e70485efacfb15cc6768098c19fa89c4098d8c
|
4
|
+
data.tar.gz: e13db8a3a331535dd73aed4ffb965a130fdf8ae57df4241cafb4c6e1b421305f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7a9d79a7a86ca0c6f9968bae9c980049174626d12d44b8cafa73139be5bf24c66d3675a5e16a3a104d5b04ce76b1a0e136e2cc788338c142107af9354eca8e7d
|
7
|
+
data.tar.gz: be890cb3de5d4a5885c6bcc213349bfb656567f2b4cc63decabbd608bf7004126358fd13b42e6b3a6271e25db19f85c2dc061ed2c1b862e7f968276fa7632377
|
data/CHANGELOG.markdown
CHANGED
@@ -2,6 +2,20 @@
|
|
2
2
|
|
3
3
|
All notable changes to this project (at least, from v3.0.0 onwards) are documented in this file.
|
4
4
|
|
5
|
+
## 5.3.0 - 2021-08-19
|
6
|
+
|
7
|
+
[Release Notes](https://github.com/pat/thinking-sphinx/releases/tag/v5.3.0)
|
8
|
+
|
9
|
+
### Changed
|
10
|
+
|
11
|
+
* StaleIdsExceptions now include a URL in their error message with recommendations on how to resolve the problem.
|
12
|
+
* Fire real-time callbacks on `after_commit` (including deletions) to ensure data is fully persisted to the database before updating Sphinx. More details in [#1204](https://github.com/pat/thinking-sphinx/pull/1204).
|
13
|
+
|
14
|
+
### Fixed
|
15
|
+
|
16
|
+
* Ensure Thinking Sphinx's ActiveRecord components are loaded by either Rails' after_initialise hook or ActiveSupport's on_load notification, because the order of these two events are not consistent.
|
17
|
+
* Remove `app/indices` from eager_load_paths in Rails 4.2 and 5, to match the behaviour in 6.
|
18
|
+
|
5
19
|
## 5.2.1 - 2021-08-09
|
6
20
|
|
7
21
|
[Release Notes](https://github.com/pat/thinking-sphinx/releases/tag/v5.2.1)
|
data/README.textile
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
h1. Thinking Sphinx
|
2
2
|
|
3
|
-
Thinking Sphinx is a library for connecting ActiveRecord to the Sphinx full-text search tool, and integrates closely with Rails (but also works with other Ruby web frameworks). The current release is v5.
|
3
|
+
Thinking Sphinx is a library for connecting ActiveRecord to the Sphinx full-text search tool, and integrates closely with Rails (but also works with other Ruby web frameworks). The current release is v5.3.0.
|
4
4
|
|
5
5
|
h2. Upgrading
|
6
6
|
|
@@ -14,7 +14,7 @@ It's a gem, so install it like you would any other gem. You will also need to sp
|
|
14
14
|
|
15
15
|
<pre><code>gem 'mysql2', '~> 0.4', :platform => :ruby
|
16
16
|
gem 'jdbc-mysql', '~> 5.1.35', :platform => :jruby
|
17
|
-
gem 'thinking-sphinx', '~> 5.
|
17
|
+
gem 'thinking-sphinx', '~> 5.3'</code></pre>
|
18
18
|
|
19
19
|
The MySQL gems mentioned are required for connecting to Sphinx, so please include it even when you're using PostgreSQL for your database.
|
20
20
|
|
data/lib/thinking_sphinx.rb
CHANGED
@@ -101,10 +101,6 @@ require 'thinking_sphinx/distributed'
|
|
101
101
|
require 'thinking_sphinx/logger'
|
102
102
|
require 'thinking_sphinx/real_time'
|
103
103
|
|
104
|
-
if defined?(Rails::Railtie)
|
105
|
-
require 'thinking_sphinx/railtie'
|
106
|
-
else
|
107
|
-
require 'thinking_sphinx/active_record'
|
108
|
-
end
|
104
|
+
require 'thinking_sphinx/railtie' if defined?(Rails::Railtie)
|
109
105
|
|
110
106
|
ThinkingSphinx.before_index_hooks << ThinkingSphinx::Hooks::GuardPresence
|
@@ -40,3 +40,5 @@ require 'thinking_sphinx/active_record/depolymorph/conditions_reflection'
|
|
40
40
|
require 'thinking_sphinx/active_record/depolymorph/overridden_reflection'
|
41
41
|
require 'thinking_sphinx/active_record/depolymorph/scoped_reflection'
|
42
42
|
require 'thinking_sphinx/active_record/filter_reflection'
|
43
|
+
|
44
|
+
ActiveRecord::Base.include ThinkingSphinx::ActiveRecord::Base
|
@@ -3,7 +3,11 @@
|
|
3
3
|
class ThinkingSphinx::ActiveRecord::Callbacks::DeleteCallbacks <
|
4
4
|
ThinkingSphinx::Callbacks
|
5
5
|
|
6
|
-
callbacks :after_destroy, :after_rollback
|
6
|
+
callbacks :after_commit, :after_destroy, :after_rollback
|
7
|
+
|
8
|
+
def after_commit
|
9
|
+
delete_from_sphinx
|
10
|
+
end
|
7
11
|
|
8
12
|
def after_destroy
|
9
13
|
delete_from_sphinx
|
@@ -24,7 +24,10 @@ class ThinkingSphinx::Callbacks::Appender
|
|
24
24
|
attr_reader :model, :reference, :options, :block
|
25
25
|
|
26
26
|
def add_core_callbacks
|
27
|
-
model.
|
27
|
+
model.after_commit(
|
28
|
+
ThinkingSphinx::ActiveRecord::Callbacks::DeleteCallbacks,
|
29
|
+
on: :destroy
|
30
|
+
)
|
28
31
|
end
|
29
32
|
|
30
33
|
def add_delta_callbacks
|
@@ -40,8 +43,9 @@ class ThinkingSphinx::Callbacks::Appender
|
|
40
43
|
end
|
41
44
|
|
42
45
|
def add_real_time_callbacks
|
43
|
-
model.
|
44
|
-
reference, path, &block
|
46
|
+
model.after_commit(
|
47
|
+
ThinkingSphinx::RealTime.callback_for(reference, path, &block),
|
48
|
+
on: [:create, :update]
|
45
49
|
)
|
46
50
|
end
|
47
51
|
|
@@ -7,21 +7,23 @@ class ThinkingSphinx::Railtie < Rails::Railtie
|
|
7
7
|
|
8
8
|
config.after_initialize do
|
9
9
|
require 'thinking_sphinx/active_record'
|
10
|
-
ActiveRecord::Base.include ThinkingSphinx::ActiveRecord::Base
|
11
10
|
end
|
12
11
|
|
13
12
|
initializer 'thinking_sphinx.initialisation' do
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
Rails.root.join("app", "indices").to_s
|
18
|
-
)
|
19
|
-
end
|
13
|
+
ActiveSupport.on_load(:active_record) do
|
14
|
+
require 'thinking_sphinx/active_record'
|
15
|
+
end
|
20
16
|
|
21
|
-
|
22
|
-
|
23
|
-
|
17
|
+
if ActiveSupport::VERSION::MAJOR > 5 &&
|
18
|
+
Rails.application.config.autoloader == :zeitwerk
|
19
|
+
ActiveSupport::Dependencies.autoload_paths.delete(
|
20
|
+
Rails.root.join("app", "indices").to_s
|
21
|
+
)
|
24
22
|
end
|
23
|
+
|
24
|
+
Rails.application.config.eager_load_paths -=
|
25
|
+
ThinkingSphinx::Configuration.instance.index_paths
|
26
|
+
Rails.application.config.eager_load_paths.freeze
|
25
27
|
end
|
26
28
|
|
27
29
|
rake_tasks do
|
@@ -9,6 +9,7 @@ class ThinkingSphinx::Search::StaleIdsException < StandardError
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def message
|
12
|
-
"Record IDs found by Sphinx but not by ActiveRecord : #{ids.join(', ')}"
|
12
|
+
"Record IDs found by Sphinx but not by ActiveRecord : #{ids.join(', ')}\n" \
|
13
|
+
"https://freelancing-gods.com/thinking-sphinx/v5/common_issues.html#record-ids"
|
13
14
|
end
|
14
15
|
end
|
@@ -16,7 +16,7 @@ describe 'SQL delta indexing', :live => true do
|
|
16
16
|
)
|
17
17
|
sleep 0.25
|
18
18
|
|
19
|
-
expect(Book.search('Terry Pratchett').to_a).to
|
19
|
+
expect(Book.search('Terry Pratchett').to_a).to match_array([guards, men])
|
20
20
|
end
|
21
21
|
|
22
22
|
it "automatically indexes updated records" do
|
@@ -5,7 +5,9 @@ require 'spec_helper'
|
|
5
5
|
describe ThinkingSphinx::ActiveRecord::Index do
|
6
6
|
let(:index) { ThinkingSphinx::ActiveRecord::Index.new :user }
|
7
7
|
let(:config) { double('config', :settings => {},
|
8
|
-
:indices_location => 'location', :next_offset => 8
|
8
|
+
:indices_location => 'location', :next_offset => 8,
|
9
|
+
:index_set_class => index_set_class) }
|
10
|
+
let(:index_set_class) { double :reference_name => :user }
|
9
11
|
|
10
12
|
before :each do
|
11
13
|
allow(ThinkingSphinx::Configuration).to receive_messages :instance => config
|
data/thinking-sphinx.gemspec
CHANGED
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.
|
4
|
+
version: 5.3.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: 2021-08-
|
11
|
+
date: 2021-08-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|