searchkick 2.3.2 → 4.4.1
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 +5 -5
- data/CHANGELOG.md +251 -84
- data/LICENSE.txt +1 -1
- data/README.md +552 -432
- data/lib/searchkick/bulk_indexer.rb +173 -0
- data/lib/searchkick/bulk_reindex_job.rb +2 -2
- data/lib/searchkick/hash_wrapper.rb +12 -0
- data/lib/searchkick/index.rb +187 -348
- data/lib/searchkick/index_options.rb +494 -282
- data/lib/searchkick/logging.rb +17 -13
- data/lib/searchkick/model.rb +52 -97
- data/lib/searchkick/multi_search.rb +9 -10
- data/lib/searchkick/process_batch_job.rb +17 -4
- data/lib/searchkick/process_queue_job.rb +20 -12
- data/lib/searchkick/query.rb +415 -199
- data/lib/searchkick/railtie.rb +7 -0
- data/lib/searchkick/record_data.rb +128 -0
- data/lib/searchkick/record_indexer.rb +79 -0
- data/lib/searchkick/reindex_queue.rb +1 -1
- data/lib/searchkick/reindex_v2_job.rb +14 -12
- data/lib/searchkick/results.rb +135 -41
- data/lib/searchkick/version.rb +1 -1
- data/lib/searchkick.rb +130 -61
- data/lib/tasks/searchkick.rake +34 -0
- metadata +18 -162
- data/.gitignore +0 -22
- data/.travis.yml +0 -39
- data/Gemfile +0 -16
- data/Rakefile +0 -20
- data/benchmark/Gemfile +0 -23
- data/benchmark/benchmark.rb +0 -97
- data/lib/searchkick/tasks.rb +0 -33
- data/searchkick.gemspec +0 -28
- data/test/aggs_test.rb +0 -197
- data/test/autocomplete_test.rb +0 -75
- data/test/boost_test.rb +0 -202
- data/test/callbacks_test.rb +0 -59
- data/test/ci/before_install.sh +0 -17
- data/test/errors_test.rb +0 -19
- data/test/gemfiles/activerecord31.gemfile +0 -7
- data/test/gemfiles/activerecord32.gemfile +0 -7
- data/test/gemfiles/activerecord40.gemfile +0 -8
- data/test/gemfiles/activerecord41.gemfile +0 -8
- data/test/gemfiles/activerecord42.gemfile +0 -7
- data/test/gemfiles/activerecord50.gemfile +0 -7
- data/test/gemfiles/apartment.gemfile +0 -8
- data/test/gemfiles/cequel.gemfile +0 -8
- data/test/gemfiles/mongoid2.gemfile +0 -7
- data/test/gemfiles/mongoid3.gemfile +0 -6
- data/test/gemfiles/mongoid4.gemfile +0 -7
- data/test/gemfiles/mongoid5.gemfile +0 -7
- data/test/gemfiles/mongoid6.gemfile +0 -12
- data/test/gemfiles/nobrainer.gemfile +0 -8
- data/test/gemfiles/parallel_tests.gemfile +0 -8
- data/test/geo_shape_test.rb +0 -175
- data/test/highlight_test.rb +0 -78
- data/test/index_test.rb +0 -166
- data/test/inheritance_test.rb +0 -83
- data/test/marshal_test.rb +0 -8
- data/test/match_test.rb +0 -276
- data/test/misspellings_test.rb +0 -56
- data/test/model_test.rb +0 -42
- data/test/multi_search_test.rb +0 -36
- data/test/multi_tenancy_test.rb +0 -22
- data/test/order_test.rb +0 -46
- data/test/pagination_test.rb +0 -70
- data/test/partial_reindex_test.rb +0 -58
- data/test/query_test.rb +0 -35
- data/test/records_test.rb +0 -10
- data/test/reindex_test.rb +0 -64
- data/test/reindex_v2_job_test.rb +0 -32
- data/test/routing_test.rb +0 -23
- data/test/should_index_test.rb +0 -32
- data/test/similar_test.rb +0 -28
- data/test/sql_test.rb +0 -214
- data/test/suggest_test.rb +0 -95
- data/test/support/kaminari.yml +0 -21
- data/test/synonyms_test.rb +0 -67
- data/test/test_helper.rb +0 -567
- data/test/where_test.rb +0 -223
data/lib/searchkick.rb
CHANGED
@@ -1,34 +1,36 @@
|
|
1
|
-
|
1
|
+
# dependencies
|
2
|
+
require "active_support"
|
3
|
+
require "active_support/core_ext/hash/deep_merge"
|
2
4
|
require "elasticsearch"
|
3
5
|
require "hashie"
|
4
|
-
|
5
|
-
|
6
|
+
|
7
|
+
# modules
|
8
|
+
require "searchkick/bulk_indexer"
|
6
9
|
require "searchkick/index"
|
7
10
|
require "searchkick/indexer"
|
11
|
+
require "searchkick/hash_wrapper"
|
12
|
+
require "searchkick/middleware"
|
13
|
+
require "searchkick/model"
|
14
|
+
require "searchkick/multi_search"
|
15
|
+
require "searchkick/query"
|
8
16
|
require "searchkick/reindex_queue"
|
17
|
+
require "searchkick/record_data"
|
18
|
+
require "searchkick/record_indexer"
|
9
19
|
require "searchkick/results"
|
10
|
-
require "searchkick/
|
11
|
-
require "searchkick/multi_search"
|
12
|
-
require "searchkick/model"
|
13
|
-
require "searchkick/tasks"
|
14
|
-
require "searchkick/middleware"
|
15
|
-
require "searchkick/logging" if defined?(ActiveSupport::Notifications)
|
16
|
-
require "active_support/core_ext/hash/deep_merge"
|
20
|
+
require "searchkick/version"
|
17
21
|
|
18
|
-
#
|
19
|
-
|
20
|
-
|
21
|
-
rescue LoadError
|
22
|
-
# do nothing
|
23
|
-
end
|
24
|
-
if defined?(ActiveJob)
|
25
|
-
require "searchkick/bulk_reindex_job"
|
26
|
-
require "searchkick/process_queue_job"
|
27
|
-
require "searchkick/process_batch_job"
|
28
|
-
require "searchkick/reindex_v2_job"
|
29
|
-
end
|
22
|
+
# integrations
|
23
|
+
require "searchkick/railtie" if defined?(Rails)
|
24
|
+
require "searchkick/logging" if defined?(ActiveSupport::Notifications)
|
30
25
|
|
31
26
|
module Searchkick
|
27
|
+
# background jobs
|
28
|
+
autoload :BulkReindexJob, "searchkick/bulk_reindex_job"
|
29
|
+
autoload :ProcessBatchJob, "searchkick/process_batch_job"
|
30
|
+
autoload :ProcessQueueJob, "searchkick/process_queue_job"
|
31
|
+
autoload :ReindexV2Job, "searchkick/reindex_v2_job"
|
32
|
+
|
33
|
+
# errors
|
32
34
|
class Error < StandardError; end
|
33
35
|
class MissingIndexError < Error; end
|
34
36
|
class UnsupportedVersionError < Error; end
|
@@ -37,7 +39,7 @@ module Searchkick
|
|
37
39
|
class ImportError < Error; end
|
38
40
|
|
39
41
|
class << self
|
40
|
-
attr_accessor :search_method_name, :wordnet_path, :timeout, :models, :client_options, :redis, :index_prefix, :index_suffix, :queue_name
|
42
|
+
attr_accessor :search_method_name, :wordnet_path, :timeout, :models, :client_options, :redis, :index_prefix, :index_suffix, :queue_name, :model_options
|
41
43
|
attr_writer :client, :env, :search_timeout
|
42
44
|
attr_reader :aws_credentials
|
43
45
|
end
|
@@ -47,21 +49,19 @@ module Searchkick
|
|
47
49
|
self.models = []
|
48
50
|
self.client_options = {}
|
49
51
|
self.queue_name = :searchkick
|
52
|
+
self.model_options = {}
|
50
53
|
|
51
54
|
def self.client
|
52
55
|
@client ||= begin
|
53
|
-
require "typhoeus/adapters/faraday" if defined?(Typhoeus)
|
56
|
+
require "typhoeus/adapters/faraday" if defined?(Typhoeus) && Gem::Version.new(Faraday::VERSION) < Gem::Version.new("0.14.0")
|
54
57
|
|
55
58
|
Elasticsearch::Client.new({
|
56
59
|
url: ENV["ELASTICSEARCH_URL"],
|
57
|
-
transport_options: {request: {timeout: timeout}, headers: {content_type: "application/json"}}
|
60
|
+
transport_options: {request: {timeout: timeout}, headers: {content_type: "application/json"}},
|
61
|
+
retry_on_failure: 2
|
58
62
|
}.deep_merge(client_options)) do |f|
|
59
63
|
f.use Searchkick::Middleware
|
60
|
-
f.request
|
61
|
-
credentials: Aws::Credentials.new(aws_credentials[:access_key_id], aws_credentials[:secret_access_key]),
|
62
|
-
service_name: "es",
|
63
|
-
region: aws_credentials[:region] || "us-east-1"
|
64
|
-
} if aws_credentials
|
64
|
+
f.request signer_middleware_key, signer_middleware_aws_params if aws_credentials
|
65
65
|
end
|
66
66
|
end
|
67
67
|
end
|
@@ -71,7 +71,7 @@ module Searchkick
|
|
71
71
|
end
|
72
72
|
|
73
73
|
def self.search_timeout
|
74
|
-
@search_timeout || timeout
|
74
|
+
(defined?(@search_timeout) && @search_timeout) || timeout
|
75
75
|
end
|
76
76
|
|
77
77
|
def self.server_version
|
@@ -79,22 +79,44 @@ module Searchkick
|
|
79
79
|
end
|
80
80
|
|
81
81
|
def self.server_below?(version)
|
82
|
-
Gem::Version.new(server_version.
|
82
|
+
Gem::Version.new(server_version.split("-")[0]) < Gem::Version.new(version.split("-")[0])
|
83
83
|
end
|
84
84
|
|
85
|
-
|
86
|
-
|
85
|
+
# memoize for performance
|
86
|
+
def self.server_below7?
|
87
|
+
unless defined?(@server_below7)
|
88
|
+
@server_below7 = server_below?("7.0.0")
|
89
|
+
end
|
90
|
+
@server_below7
|
91
|
+
end
|
87
92
|
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
# if index_name.size == 1 && index_name.first.respond_to?(:searchkick_index)
|
92
|
-
# klass = index_name.first
|
93
|
-
# end
|
94
|
-
# end
|
93
|
+
def self.search(term = "*", model: nil, **options, &block)
|
94
|
+
options = options.dup
|
95
|
+
klass = model
|
95
96
|
|
96
|
-
|
97
|
-
|
97
|
+
# convert index_name into models if possible
|
98
|
+
# this should allow for easier upgrade
|
99
|
+
if options[:index_name] && !options[:models] && Array(options[:index_name]).all? { |v| v.respond_to?(:searchkick_index) }
|
100
|
+
options[:models] = options.delete(:index_name)
|
101
|
+
end
|
102
|
+
|
103
|
+
# make Searchkick.search(models: [Product]) and Product.search equivalent
|
104
|
+
unless klass
|
105
|
+
models = Array(options[:models])
|
106
|
+
if models.size == 1
|
107
|
+
klass = models.first
|
108
|
+
options.delete(:models)
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
if klass
|
113
|
+
if (options[:models] && Array(options[:models]) != [klass]) || Array(options[:index_name]).any? { |v| v.respond_to?(:searchkick_index) && v != klass }
|
114
|
+
raise ArgumentError, "Use Searchkick.search to search multiple models"
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
options = options.merge(block: block) if block
|
119
|
+
query = Searchkick::Query.new(klass, term, **options)
|
98
120
|
if options[:execute] == false
|
99
121
|
query
|
100
122
|
else
|
@@ -102,8 +124,8 @@ module Searchkick
|
|
102
124
|
end
|
103
125
|
end
|
104
126
|
|
105
|
-
def self.multi_search(queries
|
106
|
-
Searchkick::MultiSearch.new(queries
|
127
|
+
def self.multi_search(queries)
|
128
|
+
Searchkick::MultiSearch.new(queries).perform
|
107
129
|
end
|
108
130
|
|
109
131
|
# callbacks
|
@@ -116,17 +138,22 @@ module Searchkick
|
|
116
138
|
self.callbacks_value = false
|
117
139
|
end
|
118
140
|
|
119
|
-
def self.callbacks?
|
120
|
-
|
141
|
+
def self.callbacks?(default: true)
|
142
|
+
if callbacks_value.nil?
|
143
|
+
default
|
144
|
+
else
|
145
|
+
callbacks_value != false
|
146
|
+
end
|
121
147
|
end
|
122
148
|
|
123
|
-
def self.callbacks(value)
|
149
|
+
def self.callbacks(value = nil)
|
124
150
|
if block_given?
|
125
151
|
previous_value = callbacks_value
|
126
152
|
begin
|
127
153
|
self.callbacks_value = value
|
128
|
-
yield
|
154
|
+
result = yield
|
129
155
|
indexer.perform if callbacks_value == :bulk
|
156
|
+
result
|
130
157
|
ensure
|
131
158
|
self.callbacks_value = previous_value
|
132
159
|
end
|
@@ -136,23 +163,27 @@ module Searchkick
|
|
136
163
|
end
|
137
164
|
|
138
165
|
def self.aws_credentials=(creds)
|
139
|
-
|
166
|
+
begin
|
167
|
+
# TODO remove in Searchkick 5 (just use aws_sigv4)
|
168
|
+
require "faraday_middleware/aws_signers_v4"
|
169
|
+
rescue LoadError
|
170
|
+
require "faraday_middleware/aws_sigv4"
|
171
|
+
end
|
140
172
|
@aws_credentials = creds
|
141
173
|
@client = nil # reset client
|
142
174
|
end
|
143
175
|
|
144
176
|
def self.reindex_status(index_name)
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
raise Searchkick::Error, "Redis not configured"
|
153
|
-
end
|
177
|
+
raise Searchkick::Error, "Redis not configured" unless redis
|
178
|
+
|
179
|
+
batches_left = Searchkick::Index.new(index_name).batches_left
|
180
|
+
{
|
181
|
+
completed: batches_left == 0,
|
182
|
+
batches_left: batches_left
|
183
|
+
}
|
154
184
|
end
|
155
185
|
|
186
|
+
# TODO use ConnectionPool::Wrapper when redis is set so this is no longer needed
|
156
187
|
def self.with_redis
|
157
188
|
if redis
|
158
189
|
if redis.respond_to?(:with)
|
@@ -165,6 +196,10 @@ module Searchkick
|
|
165
196
|
end
|
166
197
|
end
|
167
198
|
|
199
|
+
def self.warn(message)
|
200
|
+
super("[searchkick] WARNING: #{message}")
|
201
|
+
end
|
202
|
+
|
168
203
|
# private
|
169
204
|
def self.load_records(records, ids)
|
170
205
|
records =
|
@@ -200,10 +235,44 @@ module Searchkick
|
|
200
235
|
def self.callbacks_value=(value)
|
201
236
|
Thread.current[:searchkick_callbacks_enabled] = value
|
202
237
|
end
|
238
|
+
|
239
|
+
# private
|
240
|
+
def self.signer_middleware_key
|
241
|
+
defined?(FaradayMiddleware::AwsSignersV4) ? :aws_signers_v4 : :aws_sigv4
|
242
|
+
end
|
243
|
+
|
244
|
+
# private
|
245
|
+
def self.signer_middleware_aws_params
|
246
|
+
if signer_middleware_key == :aws_sigv4
|
247
|
+
{service: "es", region: "us-east-1"}.merge(aws_credentials)
|
248
|
+
else
|
249
|
+
{
|
250
|
+
credentials: aws_credentials[:credentials] || Aws::Credentials.new(aws_credentials[:access_key_id], aws_credentials[:secret_access_key]),
|
251
|
+
service_name: "es",
|
252
|
+
region: aws_credentials[:region] || "us-east-1"
|
253
|
+
}
|
254
|
+
end
|
255
|
+
end
|
256
|
+
|
257
|
+
# private
|
258
|
+
# methods are forwarded to base class
|
259
|
+
# this check to see if scope exists on that class
|
260
|
+
# it's a bit tricky, but this seems to work
|
261
|
+
def self.relation?(klass)
|
262
|
+
if klass.respond_to?(:current_scope)
|
263
|
+
!klass.current_scope.nil?
|
264
|
+
elsif defined?(Mongoid::Threaded)
|
265
|
+
!Mongoid::Threaded.current_scope(klass).nil?
|
266
|
+
end
|
267
|
+
end
|
203
268
|
end
|
204
269
|
|
205
|
-
|
206
|
-
ActiveModel::Callbacks.
|
270
|
+
require "active_model/callbacks"
|
271
|
+
ActiveModel::Callbacks.include(Searchkick::Model)
|
272
|
+
# TODO use
|
273
|
+
# ActiveSupport.on_load(:mongoid) do
|
274
|
+
# Mongoid::Document::ClassMethods.include Searchkick::Model
|
275
|
+
# end
|
207
276
|
|
208
277
|
ActiveSupport.on_load(:active_record) do
|
209
278
|
extend Searchkick::Model
|
@@ -0,0 +1,34 @@
|
|
1
|
+
namespace :searchkick do
|
2
|
+
desc "reindex a model (specify CLASS)"
|
3
|
+
task reindex: :environment do
|
4
|
+
class_name = ENV["CLASS"]
|
5
|
+
abort "USAGE: rake searchkick:reindex CLASS=Product" unless class_name
|
6
|
+
|
7
|
+
model = class_name.safe_constantize
|
8
|
+
abort "Could not find class: #{class_name}" unless model
|
9
|
+
abort "#{class_name} is not a searchkick model" unless Searchkick.models.include?(model)
|
10
|
+
|
11
|
+
puts "Reindexing #{model.name}..."
|
12
|
+
model.reindex
|
13
|
+
puts "Reindex successful"
|
14
|
+
end
|
15
|
+
|
16
|
+
namespace :reindex do
|
17
|
+
desc "reindex all models"
|
18
|
+
task all: :environment do
|
19
|
+
# eager load models to populate Searchkick.models
|
20
|
+
if Rails.respond_to?(:autoloaders) && Rails.autoloaders.zeitwerk_enabled?
|
21
|
+
# fix for https://github.com/rails/rails/issues/37006
|
22
|
+
Zeitwerk::Loader.eager_load_all
|
23
|
+
else
|
24
|
+
Rails.application.eager_load!
|
25
|
+
end
|
26
|
+
|
27
|
+
Searchkick.models.each do |model|
|
28
|
+
puts "Reindexing #{model.name}..."
|
29
|
+
model.reindex
|
30
|
+
end
|
31
|
+
puts "Reindex complete"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: searchkick
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 4.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Kane
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-06-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '5'
|
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: '
|
26
|
+
version: '5'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: elasticsearch
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '6'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '6'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: hashie
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,66 +52,19 @@ dependencies:
|
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
-
|
56
|
-
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - ">="
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - ">="
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: rake
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - ">="
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - ">="
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: minitest
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - ">="
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - ">="
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '0'
|
97
|
-
description: Intelligent search made easy
|
98
|
-
email:
|
99
|
-
- andrew@chartkick.com
|
55
|
+
description:
|
56
|
+
email: andrew@chartkick.com
|
100
57
|
executables: []
|
101
58
|
extensions: []
|
102
59
|
extra_rdoc_files: []
|
103
60
|
files:
|
104
|
-
- ".gitignore"
|
105
|
-
- ".travis.yml"
|
106
61
|
- CHANGELOG.md
|
107
|
-
- Gemfile
|
108
62
|
- LICENSE.txt
|
109
63
|
- README.md
|
110
|
-
- Rakefile
|
111
|
-
- benchmark/Gemfile
|
112
|
-
- benchmark/benchmark.rb
|
113
64
|
- lib/searchkick.rb
|
65
|
+
- lib/searchkick/bulk_indexer.rb
|
114
66
|
- lib/searchkick/bulk_reindex_job.rb
|
67
|
+
- lib/searchkick/hash_wrapper.rb
|
115
68
|
- lib/searchkick/index.rb
|
116
69
|
- lib/searchkick/index_options.rb
|
117
70
|
- lib/searchkick/indexer.rb
|
@@ -122,59 +75,14 @@ files:
|
|
122
75
|
- lib/searchkick/process_batch_job.rb
|
123
76
|
- lib/searchkick/process_queue_job.rb
|
124
77
|
- lib/searchkick/query.rb
|
78
|
+
- lib/searchkick/railtie.rb
|
79
|
+
- lib/searchkick/record_data.rb
|
80
|
+
- lib/searchkick/record_indexer.rb
|
125
81
|
- lib/searchkick/reindex_queue.rb
|
126
82
|
- lib/searchkick/reindex_v2_job.rb
|
127
83
|
- lib/searchkick/results.rb
|
128
|
-
- lib/searchkick/tasks.rb
|
129
84
|
- lib/searchkick/version.rb
|
130
|
-
- searchkick.
|
131
|
-
- test/aggs_test.rb
|
132
|
-
- test/autocomplete_test.rb
|
133
|
-
- test/boost_test.rb
|
134
|
-
- test/callbacks_test.rb
|
135
|
-
- test/ci/before_install.sh
|
136
|
-
- test/errors_test.rb
|
137
|
-
- test/gemfiles/activerecord31.gemfile
|
138
|
-
- test/gemfiles/activerecord32.gemfile
|
139
|
-
- test/gemfiles/activerecord40.gemfile
|
140
|
-
- test/gemfiles/activerecord41.gemfile
|
141
|
-
- test/gemfiles/activerecord42.gemfile
|
142
|
-
- test/gemfiles/activerecord50.gemfile
|
143
|
-
- test/gemfiles/apartment.gemfile
|
144
|
-
- test/gemfiles/cequel.gemfile
|
145
|
-
- test/gemfiles/mongoid2.gemfile
|
146
|
-
- test/gemfiles/mongoid3.gemfile
|
147
|
-
- test/gemfiles/mongoid4.gemfile
|
148
|
-
- test/gemfiles/mongoid5.gemfile
|
149
|
-
- test/gemfiles/mongoid6.gemfile
|
150
|
-
- test/gemfiles/nobrainer.gemfile
|
151
|
-
- test/gemfiles/parallel_tests.gemfile
|
152
|
-
- test/geo_shape_test.rb
|
153
|
-
- test/highlight_test.rb
|
154
|
-
- test/index_test.rb
|
155
|
-
- test/inheritance_test.rb
|
156
|
-
- test/marshal_test.rb
|
157
|
-
- test/match_test.rb
|
158
|
-
- test/misspellings_test.rb
|
159
|
-
- test/model_test.rb
|
160
|
-
- test/multi_search_test.rb
|
161
|
-
- test/multi_tenancy_test.rb
|
162
|
-
- test/order_test.rb
|
163
|
-
- test/pagination_test.rb
|
164
|
-
- test/partial_reindex_test.rb
|
165
|
-
- test/query_test.rb
|
166
|
-
- test/records_test.rb
|
167
|
-
- test/reindex_test.rb
|
168
|
-
- test/reindex_v2_job_test.rb
|
169
|
-
- test/routing_test.rb
|
170
|
-
- test/should_index_test.rb
|
171
|
-
- test/similar_test.rb
|
172
|
-
- test/sql_test.rb
|
173
|
-
- test/suggest_test.rb
|
174
|
-
- test/support/kaminari.yml
|
175
|
-
- test/synonyms_test.rb
|
176
|
-
- test/test_helper.rb
|
177
|
-
- test/where_test.rb
|
85
|
+
- lib/tasks/searchkick.rake
|
178
86
|
homepage: https://github.com/ankane/searchkick
|
179
87
|
licenses:
|
180
88
|
- MIT
|
@@ -187,67 +95,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
187
95
|
requirements:
|
188
96
|
- - ">="
|
189
97
|
- !ruby/object:Gem::Version
|
190
|
-
version: '
|
98
|
+
version: '2.4'
|
191
99
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
192
100
|
requirements:
|
193
101
|
- - ">="
|
194
102
|
- !ruby/object:Gem::Version
|
195
103
|
version: '0'
|
196
104
|
requirements: []
|
197
|
-
|
198
|
-
rubygems_version: 2.6.13
|
105
|
+
rubygems_version: 3.1.2
|
199
106
|
signing_key:
|
200
107
|
specification_version: 4
|
201
|
-
summary:
|
202
|
-
|
203
|
-
for your users.
|
204
|
-
test_files:
|
205
|
-
- benchmark/Gemfile
|
206
|
-
- benchmark/benchmark.rb
|
207
|
-
- test/aggs_test.rb
|
208
|
-
- test/autocomplete_test.rb
|
209
|
-
- test/boost_test.rb
|
210
|
-
- test/callbacks_test.rb
|
211
|
-
- test/ci/before_install.sh
|
212
|
-
- test/errors_test.rb
|
213
|
-
- test/gemfiles/activerecord31.gemfile
|
214
|
-
- test/gemfiles/activerecord32.gemfile
|
215
|
-
- test/gemfiles/activerecord40.gemfile
|
216
|
-
- test/gemfiles/activerecord41.gemfile
|
217
|
-
- test/gemfiles/activerecord42.gemfile
|
218
|
-
- test/gemfiles/activerecord50.gemfile
|
219
|
-
- test/gemfiles/apartment.gemfile
|
220
|
-
- test/gemfiles/cequel.gemfile
|
221
|
-
- test/gemfiles/mongoid2.gemfile
|
222
|
-
- test/gemfiles/mongoid3.gemfile
|
223
|
-
- test/gemfiles/mongoid4.gemfile
|
224
|
-
- test/gemfiles/mongoid5.gemfile
|
225
|
-
- test/gemfiles/mongoid6.gemfile
|
226
|
-
- test/gemfiles/nobrainer.gemfile
|
227
|
-
- test/gemfiles/parallel_tests.gemfile
|
228
|
-
- test/geo_shape_test.rb
|
229
|
-
- test/highlight_test.rb
|
230
|
-
- test/index_test.rb
|
231
|
-
- test/inheritance_test.rb
|
232
|
-
- test/marshal_test.rb
|
233
|
-
- test/match_test.rb
|
234
|
-
- test/misspellings_test.rb
|
235
|
-
- test/model_test.rb
|
236
|
-
- test/multi_search_test.rb
|
237
|
-
- test/multi_tenancy_test.rb
|
238
|
-
- test/order_test.rb
|
239
|
-
- test/pagination_test.rb
|
240
|
-
- test/partial_reindex_test.rb
|
241
|
-
- test/query_test.rb
|
242
|
-
- test/records_test.rb
|
243
|
-
- test/reindex_test.rb
|
244
|
-
- test/reindex_v2_job_test.rb
|
245
|
-
- test/routing_test.rb
|
246
|
-
- test/should_index_test.rb
|
247
|
-
- test/similar_test.rb
|
248
|
-
- test/sql_test.rb
|
249
|
-
- test/suggest_test.rb
|
250
|
-
- test/support/kaminari.yml
|
251
|
-
- test/synonyms_test.rb
|
252
|
-
- test/test_helper.rb
|
253
|
-
- test/where_test.rb
|
108
|
+
summary: Intelligent search made easy with Rails and Elasticsearch
|
109
|
+
test_files: []
|
data/.gitignore
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
*.gem
|
2
|
-
*.rbc
|
3
|
-
.bundle
|
4
|
-
.config
|
5
|
-
.yardoc
|
6
|
-
*.lock
|
7
|
-
InstalledFiles
|
8
|
-
_yardoc
|
9
|
-
coverage
|
10
|
-
doc/
|
11
|
-
lib/bundler/man
|
12
|
-
pkg
|
13
|
-
rdoc
|
14
|
-
spec/reports
|
15
|
-
test/tmp
|
16
|
-
test/version_tmp
|
17
|
-
tmp
|
18
|
-
*.log
|
19
|
-
.DS_Store
|
20
|
-
.ruby-*
|
21
|
-
.idea/
|
22
|
-
*.sqlite3
|
data/.travis.yml
DELETED
@@ -1,39 +0,0 @@
|
|
1
|
-
sudo: false
|
2
|
-
language: ruby
|
3
|
-
rvm: 2.3.1
|
4
|
-
services:
|
5
|
-
- mongodb
|
6
|
-
- redis-server
|
7
|
-
before_install:
|
8
|
-
- ./test/ci/before_install.sh
|
9
|
-
script: bundle exec rake test
|
10
|
-
before_script:
|
11
|
-
- psql -c 'create database searchkick_test;' -U postgres
|
12
|
-
notifications:
|
13
|
-
email:
|
14
|
-
on_success: never
|
15
|
-
on_failure: change
|
16
|
-
gemfile:
|
17
|
-
- Gemfile
|
18
|
-
- test/gemfiles/activerecord50.gemfile
|
19
|
-
- test/gemfiles/activerecord42.gemfile
|
20
|
-
- test/gemfiles/mongoid5.gemfile
|
21
|
-
- test/gemfiles/mongoid6.gemfile
|
22
|
-
env:
|
23
|
-
- ELASTICSEARCH_VERSION=5.5.0
|
24
|
-
jdk: oraclejdk8
|
25
|
-
matrix:
|
26
|
-
include:
|
27
|
-
- gemfile: Gemfile
|
28
|
-
env: ELASTICSEARCH_VERSION=2.0.0
|
29
|
-
jdk: oraclejdk7
|
30
|
-
- gemfile: Gemfile
|
31
|
-
env: ELASTICSEARCH_VERSION=2.4.3
|
32
|
-
jdk: oraclejdk7
|
33
|
-
- gemfile: Gemfile
|
34
|
-
env: ELASTICSEARCH_VERSION=5.0.1
|
35
|
-
jdk: oraclejdk8
|
36
|
-
allow_failures:
|
37
|
-
- gemfile: Gemfile
|
38
|
-
env: ELASTICSEARCH_VERSION=6.0.0-beta1
|
39
|
-
jdk: oraclejdk8
|
data/Gemfile
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
source "https://rubygems.org"
|
2
|
-
|
3
|
-
# Specify your gem's dependencies in searchkick.gemspec
|
4
|
-
gemspec
|
5
|
-
|
6
|
-
gem "sqlite3"
|
7
|
-
gem "activerecord", "~> 5.1.0"
|
8
|
-
gem "gemoji-parser"
|
9
|
-
gem "typhoeus"
|
10
|
-
gem "activejob"
|
11
|
-
gem "redis"
|
12
|
-
gem "connection_pool"
|
13
|
-
|
14
|
-
# kaminari
|
15
|
-
gem "actionpack"
|
16
|
-
gem "kaminari"
|
data/Rakefile
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
require "bundler/gem_tasks"
|
2
|
-
require "rake/testtask"
|
3
|
-
|
4
|
-
begin
|
5
|
-
require "parallel_tests/tasks"
|
6
|
-
require "shellwords"
|
7
|
-
rescue LoadError
|
8
|
-
# do nothing
|
9
|
-
end
|
10
|
-
|
11
|
-
task default: :test
|
12
|
-
Rake::TestTask.new do |t|
|
13
|
-
t.libs << "test"
|
14
|
-
t.pattern = "test/**/*_test.rb"
|
15
|
-
t.warning = false
|
16
|
-
end
|
17
|
-
|
18
|
-
task :benchmark do
|
19
|
-
require_relative "benchmark/benchmark"
|
20
|
-
end
|