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.
Files changed (80) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +251 -84
  3. data/LICENSE.txt +1 -1
  4. data/README.md +552 -432
  5. data/lib/searchkick/bulk_indexer.rb +173 -0
  6. data/lib/searchkick/bulk_reindex_job.rb +2 -2
  7. data/lib/searchkick/hash_wrapper.rb +12 -0
  8. data/lib/searchkick/index.rb +187 -348
  9. data/lib/searchkick/index_options.rb +494 -282
  10. data/lib/searchkick/logging.rb +17 -13
  11. data/lib/searchkick/model.rb +52 -97
  12. data/lib/searchkick/multi_search.rb +9 -10
  13. data/lib/searchkick/process_batch_job.rb +17 -4
  14. data/lib/searchkick/process_queue_job.rb +20 -12
  15. data/lib/searchkick/query.rb +415 -199
  16. data/lib/searchkick/railtie.rb +7 -0
  17. data/lib/searchkick/record_data.rb +128 -0
  18. data/lib/searchkick/record_indexer.rb +79 -0
  19. data/lib/searchkick/reindex_queue.rb +1 -1
  20. data/lib/searchkick/reindex_v2_job.rb +14 -12
  21. data/lib/searchkick/results.rb +135 -41
  22. data/lib/searchkick/version.rb +1 -1
  23. data/lib/searchkick.rb +130 -61
  24. data/lib/tasks/searchkick.rake +34 -0
  25. metadata +18 -162
  26. data/.gitignore +0 -22
  27. data/.travis.yml +0 -39
  28. data/Gemfile +0 -16
  29. data/Rakefile +0 -20
  30. data/benchmark/Gemfile +0 -23
  31. data/benchmark/benchmark.rb +0 -97
  32. data/lib/searchkick/tasks.rb +0 -33
  33. data/searchkick.gemspec +0 -28
  34. data/test/aggs_test.rb +0 -197
  35. data/test/autocomplete_test.rb +0 -75
  36. data/test/boost_test.rb +0 -202
  37. data/test/callbacks_test.rb +0 -59
  38. data/test/ci/before_install.sh +0 -17
  39. data/test/errors_test.rb +0 -19
  40. data/test/gemfiles/activerecord31.gemfile +0 -7
  41. data/test/gemfiles/activerecord32.gemfile +0 -7
  42. data/test/gemfiles/activerecord40.gemfile +0 -8
  43. data/test/gemfiles/activerecord41.gemfile +0 -8
  44. data/test/gemfiles/activerecord42.gemfile +0 -7
  45. data/test/gemfiles/activerecord50.gemfile +0 -7
  46. data/test/gemfiles/apartment.gemfile +0 -8
  47. data/test/gemfiles/cequel.gemfile +0 -8
  48. data/test/gemfiles/mongoid2.gemfile +0 -7
  49. data/test/gemfiles/mongoid3.gemfile +0 -6
  50. data/test/gemfiles/mongoid4.gemfile +0 -7
  51. data/test/gemfiles/mongoid5.gemfile +0 -7
  52. data/test/gemfiles/mongoid6.gemfile +0 -12
  53. data/test/gemfiles/nobrainer.gemfile +0 -8
  54. data/test/gemfiles/parallel_tests.gemfile +0 -8
  55. data/test/geo_shape_test.rb +0 -175
  56. data/test/highlight_test.rb +0 -78
  57. data/test/index_test.rb +0 -166
  58. data/test/inheritance_test.rb +0 -83
  59. data/test/marshal_test.rb +0 -8
  60. data/test/match_test.rb +0 -276
  61. data/test/misspellings_test.rb +0 -56
  62. data/test/model_test.rb +0 -42
  63. data/test/multi_search_test.rb +0 -36
  64. data/test/multi_tenancy_test.rb +0 -22
  65. data/test/order_test.rb +0 -46
  66. data/test/pagination_test.rb +0 -70
  67. data/test/partial_reindex_test.rb +0 -58
  68. data/test/query_test.rb +0 -35
  69. data/test/records_test.rb +0 -10
  70. data/test/reindex_test.rb +0 -64
  71. data/test/reindex_v2_job_test.rb +0 -32
  72. data/test/routing_test.rb +0 -23
  73. data/test/should_index_test.rb +0 -32
  74. data/test/similar_test.rb +0 -28
  75. data/test/sql_test.rb +0 -214
  76. data/test/suggest_test.rb +0 -95
  77. data/test/support/kaminari.yml +0 -21
  78. data/test/synonyms_test.rb +0 -67
  79. data/test/test_helper.rb +0 -567
  80. data/test/where_test.rb +0 -223
data/lib/searchkick.rb CHANGED
@@ -1,34 +1,36 @@
1
- require "active_model"
1
+ # dependencies
2
+ require "active_support"
3
+ require "active_support/core_ext/hash/deep_merge"
2
4
  require "elasticsearch"
3
5
  require "hashie"
4
- require "searchkick/version"
5
- require "searchkick/index_options"
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/query"
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
- # background jobs
19
- begin
20
- require "active_job"
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 :aws_signers_v4, {
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.sub("-", ".")) < Gem::Version.new(version.sub("-", "."))
82
+ Gem::Version.new(server_version.split("-")[0]) < Gem::Version.new(version.split("-")[0])
83
83
  end
84
84
 
85
- def self.search(term = "*", **options, &block)
86
- klass = options[:model]
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
- # TODO add in next major version
89
- # if !klass
90
- # index_name = Array(options[:index_name])
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
- query = Searchkick::Query.new(klass, term, options.except(:model))
97
- block.call(query.body) if block
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, retry_misspellings: false)
106
- Searchkick::MultiSearch.new(queries, retry_misspellings: retry_misspellings).perform
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
- Thread.current[:searchkick_callbacks_enabled].nil? || Thread.current[:searchkick_callbacks_enabled]
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
- require "faraday_middleware/aws_signers_v4"
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
- if redis
146
- batches_left = Searchkick::Index.new(index_name).batches_left
147
- {
148
- completed: batches_left == 0,
149
- batches_left: batches_left
150
- }
151
- else
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
- # TODO find better ActiveModel hook
206
- ActiveModel::Callbacks.send(:include, Searchkick::Model)
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: 2.3.2
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: 2017-09-09 00:00:00.000000000 Z
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: '4.1'
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: '4.1'
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: '1'
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: '1'
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
- - !ruby/object:Gem::Dependency
56
- name: bundler
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.gemspec
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: '0'
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
- rubyforge_project:
198
- rubygems_version: 2.6.13
105
+ rubygems_version: 3.1.2
199
106
  signing_key:
200
107
  specification_version: 4
201
- summary: Searchkick learns what your users are looking for. As more people search,
202
- it gets smarter and the results get better. It’s friendly for developers - and magical
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