searchkick 2.3.2 → 4.4.1

Sign up to get free protection for your applications and to get access to all the features.
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