elasticsearch-transport 7.5.0 → 7.8.0.pre

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 (39) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +27 -10
  3. data/README.md +142 -53
  4. data/Rakefile +16 -3
  5. data/elasticsearch-transport.gemspec +57 -63
  6. data/lib/elasticsearch-transport.rb +16 -3
  7. data/lib/elasticsearch/transport.rb +16 -3
  8. data/lib/elasticsearch/transport/client.rb +61 -13
  9. data/lib/elasticsearch/transport/redacted.rb +16 -3
  10. data/lib/elasticsearch/transport/transport/base.rb +23 -4
  11. data/lib/elasticsearch/transport/transport/connections/collection.rb +16 -3
  12. data/lib/elasticsearch/transport/transport/connections/connection.rb +16 -3
  13. data/lib/elasticsearch/transport/transport/connections/selector.rb +16 -3
  14. data/lib/elasticsearch/transport/transport/errors.rb +16 -3
  15. data/lib/elasticsearch/transport/transport/http/curb.rb +16 -3
  16. data/lib/elasticsearch/transport/transport/http/faraday.rb +17 -4
  17. data/lib/elasticsearch/transport/transport/http/manticore.rb +16 -3
  18. data/lib/elasticsearch/transport/transport/loggable.rb +16 -3
  19. data/lib/elasticsearch/transport/transport/response.rb +16 -4
  20. data/lib/elasticsearch/transport/transport/serializer/multi_json.rb +16 -3
  21. data/lib/elasticsearch/transport/transport/sniffer.rb +16 -3
  22. data/lib/elasticsearch/transport/version.rb +17 -4
  23. data/spec/elasticsearch/connections/collection_spec.rb +16 -3
  24. data/spec/elasticsearch/connections/selector_spec.rb +16 -3
  25. data/spec/elasticsearch/transport/base_spec.rb +16 -10
  26. data/spec/elasticsearch/transport/client_spec.rb +154 -28
  27. data/spec/elasticsearch/transport/sniffer_spec.rb +16 -3
  28. data/spec/spec_helper.rb +19 -1
  29. data/test/integration/transport_test.rb +16 -3
  30. data/test/profile/client_benchmark_test.rb +16 -3
  31. data/test/test_helper.rb +16 -3
  32. data/test/unit/connection_test.rb +16 -3
  33. data/test/unit/response_test.rb +17 -4
  34. data/test/unit/serializer_test.rb +16 -3
  35. data/test/unit/transport_base_test.rb +16 -3
  36. data/test/unit/transport_curb_test.rb +16 -3
  37. data/test/unit/transport_faraday_test.rb +16 -3
  38. data/test/unit/transport_manticore_test.rb +16 -3
  39. metadata +68 -70
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 271a43455912981268da637666dddf8d9201752ba7b88787284dfc79039ac0e7
4
- data.tar.gz: 92f3307366179b9eb868b2224e94b87570ffee878a9013d9419f10271731aa6e
3
+ metadata.gz: b922c1e2131a848cc6fa68e4f3559b7e47a48d794ff51f80a133bf3bb5e8dc75
4
+ data.tar.gz: 4f544cd657f098844fa0b67f12e1ac1ead3085095cad9b06d433bd6919593179
5
5
  SHA512:
6
- metadata.gz: 1ead63661251f6b672a28f3bd759b86049f159225bebf2c053fbaaf5a03d3d974082131595980a2e44ef928fdcc640ce85e271398d5e3ac13cd0daaf5daf84a9
7
- data.tar.gz: 9e99b4a07e919000b06864741380293eb073b0a3ad71e227edf3a9a443b12a4ca26cbe573d33429748561059bec51b4a315345e52d15538e6dab0d84230b8aa2
6
+ metadata.gz: 711e4ce60c75f815947f0040c6f5c1b64767312068397f60c0fa43af8ed460dd8d3656609e8843b6e18dfdf7e2e78b7d860a32a0f1615aacb757f434b23f1b3d
7
+ data.tar.gz: ed2ffecfea9ace873a32a49c370abfa5162e6de668ea4c5afcce50fe18a265054a2bf43e317022367123cceb8ec0b018b26ed83c5158c894563c4d71a019ed6c
data/Gemfile CHANGED
@@ -1,25 +1,42 @@
1
- # Licensed to Elasticsearch B.V under one or more agreements.
2
- # Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
3
- # See the LICENSE file in the project root for more information
1
+ # Licensed to Elasticsearch B.V. under one or more contributor
2
+ # license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright
4
+ # ownership. Elasticsearch B.V. licenses this file to you under
5
+ # the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
4
17
 
5
18
  source 'https://rubygems.org'
6
19
 
7
20
  # Specify your gem's dependencies in elasticsearch-transport.gemspec
8
21
  gemspec
9
22
 
10
- if File.exist? File.expand_path("../../elasticsearch-api/elasticsearch-api.gemspec", __FILE__)
11
- gem 'elasticsearch-api', :path => File.expand_path("../../elasticsearch-api", __FILE__), :require => false
23
+ if File.exist? File.expand_path('../../elasticsearch-api/elasticsearch-api.gemspec', __FILE__)
24
+ gem 'elasticsearch-api', path: File.expand_path('../../elasticsearch-api', __FILE__), require: false
12
25
  end
13
26
 
14
- if File.exist? File.expand_path("../../elasticsearch-extensions/elasticsearch-extensions.gemspec", __FILE__)
15
- gem 'elasticsearch-extensions', :path => File.expand_path("../../elasticsearch-extensions", __FILE__), :require => false
27
+ if File.exist? File.expand_path('../../elasticsearch-extensions/elasticsearch-extensions.gemspec', __FILE__)
28
+ gem 'elasticsearch-extensions', path: File.expand_path('../../elasticsearch-extensions', __FILE__), require: false
16
29
  end
17
30
 
18
- if File.exist? File.expand_path("../../elasticsearch/elasticsearch.gemspec", __FILE__)
19
- gem 'elasticsearch', :path => File.expand_path("../../elasticsearch", __FILE__), :require => false
31
+ if File.exist? File.expand_path('../../elasticsearch/elasticsearch.gemspec', __FILE__)
32
+ gem 'elasticsearch', path: File.expand_path('../../elasticsearch', __FILE__), require: false
20
33
  end
21
34
 
22
35
  group :development do
23
36
  gem 'rspec'
24
- gem 'pry-nav'
37
+ if defined?(JRUBY_VERSION)
38
+ gem 'pry-nav'
39
+ else
40
+ gem 'pry-byebug'
41
+ end
25
42
  end
data/README.md CHANGED
@@ -28,12 +28,16 @@ Features overview:
28
28
  * Node reloading (based on cluster state) on errors or on demand
29
29
 
30
30
  For optimal performance, use a HTTP library which supports persistent ("keep-alive") connections,
31
- such as [Typhoeus](https://github.com/typhoeus/typhoeus).
32
- Just require the library (`require 'typhoeus'; require 'typhoeus/adapters/faraday'`) in your code,
33
- and it will be automatically used; currently these libraries will be automatically detected and used:
34
- [Patron](https://github.com/toland/patron),
35
- [HTTPClient](https://rubygems.org/gems/httpclient) and
36
- [Net::HTTP::Persistent](https://rubygems.org/gems/net-http-persistent).
31
+ such as [patron](https://github.com/toland/patron).
32
+ Just require the library (`require 'patron'`) in your code,
33
+ and it will be automatically used.
34
+
35
+ Currently these libraries will be automatically detected and used:
36
+ - [Patron](https://github.com/toland/patron)
37
+ - [HTTPClient](https://rubygems.org/gems/httpclient)
38
+ - [Net::HTTP::Persistent](https://rubygems.org/gems/net-http-persistent)
39
+
40
+ **Note on [Typhoeus](https://github.com/typhoeus/typhoeus)**: Typhoeus is compatible and will be automatically detected too. However, the latest release (v1.3.1 at the moment of writing this) is not compatible with Faraday 1.0. [It still uses the deprecated `Faraday::Error` namespace](https://github.com/typhoeus/typhoeus/blob/v1.3.1/lib/typhoeus/adapters/faraday.rb#L100). If you want to use it with this gem, we suggest getting `master` from GitHub, since this has been fixed for v1.4.0. We'll update this if/when v1.4.0 is released.a
37
41
 
38
42
  For detailed information, see example configurations [below](#transport-implementations).
39
43
 
@@ -69,6 +73,23 @@ Full documentation is available at
69
73
 
70
74
  ## Configuration
71
75
 
76
+ * [Setting Hosts](#setting-hosts)
77
+ * [Default port](#default-port)
78
+ * [Connect using an Elastic Cloud ID](#connect-using-an-elastic-cloud-id)
79
+ * [Authentication](#authentication)
80
+ * [Logging](#logging)
81
+ * [Custom HTTP Headers](#custom-http-headers)
82
+ * [Identifying running tasks with X-Opaque-Id](#identifying-running-tasks-with-x-opaque-id)
83
+ * [Setting Timeouts](#setting-timeouts)
84
+ * [Randomizing Hosts](#randomizing-hosts)
85
+ * [Retrying on Failures](#retrying-on-failures)
86
+ * [Reloading Hosts](#reloading-hosts)
87
+ * [Connection Selector](#connection-selector)
88
+ * [Transport Implementations](#transport-implementations)
89
+ * [Serializer implementations](#serializer-implementations)
90
+ * [Exception Handling](#exception-handling)
91
+ * [Development and Community](#development-and-community)
92
+
72
93
  The client supports many configurations options for setting up and managing connections,
73
94
  configuring logging, customizing the transport library, etc.
74
95
 
@@ -144,35 +165,108 @@ use the `transport_options` option:
144
165
  Elasticsearch::Client.new url: 'https://username:password@example.com:9200',
145
166
  transport_options: { ssl: { ca_file: '/path/to/cacert.pem' } }
146
167
 
168
+ You can also use [**API Key authentication**](https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-create-api-key.html):
169
+
170
+ ``` ruby
171
+ Elasticsearch::Client.new(
172
+ host: host,
173
+ transport_options: transport_options,
174
+ api_key: credentials
175
+ )
176
+ ```
177
+
178
+ Where credentials is either the base64 encoding of `id` and `api_key` joined by a colon or a hash with the `id` and `api_key`:
179
+
180
+ ``` ruby
181
+ Elasticsearch::Client.new(
182
+ host: host,
183
+ transport_options: transport_options,
184
+ api_key: {id: 'my_id', api_key: 'my_api_key'}
185
+ )
186
+ ```
187
+
147
188
  ### Logging
148
189
 
149
190
  To log requests and responses to standard output with the default logger (an instance of Ruby's {::Logger} class),
150
191
  set the `log` argument:
151
192
 
152
- Elasticsearch::Client.new log: true
193
+ ```ruby
194
+ Elasticsearch::Client.new log: true
195
+ ```
196
+
153
197
 
154
198
  To trace requests and responses in the _Curl_ format, set the `trace` argument:
155
199
 
156
- Elasticsearch::Client.new trace: true
200
+ ```ruby
201
+ Elasticsearch::Client.new trace: true
202
+ ```
157
203
 
158
204
  You can customize the default logger or tracer:
159
205
 
206
+ ```ruby
160
207
  client.transport.logger.formatter = proc { |s, d, p, m| "#{s}: #{m}\n" }
161
208
  client.transport.logger.level = Logger::INFO
209
+ ```
162
210
 
163
211
  Or, you can use a custom `::Logger` instance:
164
212
 
165
- Elasticsearch::Client.new logger: Logger.new(STDERR)
213
+ ```ruby
214
+ Elasticsearch::Client.new logger: Logger.new(STDERR)
215
+ ```
166
216
 
167
217
  You can pass the client any conforming logger implementation:
168
218
 
169
- require 'logging' # https://github.com/TwP/logging/
219
+ ```ruby
220
+ require 'logging' # https://github.com/TwP/logging/
221
+
222
+ log = Logging.logger['elasticsearch']
223
+ log.add_appenders Logging.appenders.stdout
224
+ log.level = :info
225
+
226
+ client = Elasticsearch::Client.new logger: log
227
+ ```
228
+
229
+ ### Custom HTTP Headers
230
+
231
+ You can set a custom HTTP header on the client's initializer:
232
+
233
+ ```ruby
234
+ client = Elasticsearch::Client.new(
235
+ transport_options: {
236
+ headers:
237
+ {user_agent: "My App"}
238
+ }
239
+ )
240
+ ```
241
+
242
+ You can also pass in `headers` as a parameter to any of the API Endpoints to set custom headers for the request:
243
+
244
+ ```ruby
245
+ client.search(index: 'myindex', q: 'title:test', headers: {user_agent: "My App"})
246
+ ```
247
+
248
+ ### Identifying running tasks with X-Opaque-Id
170
249
 
171
- log = Logging.logger['elasticsearch']
172
- log.add_appenders Logging.appenders.stdout
173
- log.level = :info
250
+ The X-Opaque-Id header allows to track certain calls, or associate certain tasks with the client that started them ([more on the Elasticsearch docs](https://www.elastic.co/guide/en/elasticsearch/reference/master/tasks.html#_identifying_running_tasks)). To use this feature, you need to set an id for `opaque_id` on the client on each request. Example:
174
251
 
175
- client = Elasticsearch::Client.new logger: log
252
+ ```ruby
253
+ client = Elasticsearch::Client.new
254
+ client.search(index: 'myindex', q: 'title:test', opaque_id: '123456')
255
+ ```
256
+ The search request will include the following HTTP Header:
257
+ ```
258
+ X-Opaque-Id: 123456
259
+ ```
260
+
261
+ You can also set a prefix for X-Opaque-Id when initializing the client. This will be prepended to the id you set before each request if you're using X-Opaque-Id. Example:
262
+ ```ruby
263
+ client = Elasticsearch::Client.new(opaque_id_prefix: 'eu-west1')
264
+ client.search(index: 'myindex', q: 'title:test', opaque_id: '123456')
265
+ ```
266
+ The request will include the following HTTP Header:
267
+ ```
268
+ X-Opaque-Id: eu-west1_123456
269
+ ```
176
270
 
177
271
  ### Setting Timeouts
178
272
 
@@ -268,25 +362,29 @@ preferring HTTP clients with support for persistent connections.
268
362
 
269
363
  To use the [_Patron_](https://github.com/toland/patron) HTTP, for example, just require it:
270
364
 
271
- require 'patron'
365
+ ```ruby
366
+ require 'patron'
367
+ ```
272
368
 
273
369
  Then, create a new client, and the _Patron_ gem will be used as the "driver":
274
370
 
275
- client = Elasticsearch::Client.new
371
+ ```ruby
372
+ client = Elasticsearch::Client.new
276
373
 
277
- client.transport.connections.first.connection.builder.handlers
278
- # => [Faraday::Adapter::Patron]
374
+ client.transport.connections.first.connection.builder.adapter
375
+ # => Faraday::Adapter::Patron
279
376
 
280
- 10.times do
281
- client.nodes.stats(metric: 'http')['nodes'].values.each do |n|
282
- puts "#{n['name']} : #{n['http']['total_opened']}"
283
- end
284
- end
377
+ 10.times do
378
+ client.nodes.stats(metric: 'http')['nodes'].values.each do |n|
379
+ puts "#{n['name']} : #{n['http']['total_opened']}"
380
+ end
381
+ end
285
382
 
286
- # => Stiletoo : 24
287
- # => Stiletoo : 24
288
- # => Stiletoo : 24
289
- # => ...
383
+ # => Stiletoo : 24
384
+ # => Stiletoo : 24
385
+ # => Stiletoo : 24
386
+ # => ...
387
+ ```
290
388
 
291
389
  To use a specific adapter for _Faraday_, pass it as the `adapter` argument:
292
390
 
@@ -308,44 +406,35 @@ constructor, use the `transport_options` key:
308
406
 
309
407
  To configure the _Faraday_ instance directly, use a block:
310
408
 
311
- require 'typhoeus'
312
- require 'typhoeus/adapters/faraday'
409
+ require 'patron'
313
410
 
314
411
  client = Elasticsearch::Client.new(host: 'localhost', port: '9200') do |f|
315
412
  f.response :logger
316
- f.adapter :typhoeus
413
+ f.adapter :patron
317
414
  end
318
415
 
319
- You can use any standard Faraday middleware and plugins in the configuration block,
320
- for example sign the requests for the [AWS Elasticsearch service](https://aws.amazon.com/elasticsearch-service/):
321
-
322
- require 'faraday_middleware/aws_signers_v4'
323
-
324
- client = Elasticsearch::Client.new url: 'https://search-my-cluster-abc123....es.amazonaws.com' do |f|
325
- f.request :aws_signers_v4,
326
- credentials: Aws::Credentials.new(ENV['AWS_ACCESS_KEY'], ENV['AWS_SECRET_ACCESS_KEY']),
327
- service_name: 'es',
328
- region: 'us-east-1'
329
- end
416
+ You can use any standard Faraday middleware and plugins in the configuration block, for example sign the requests for the [AWS Elasticsearch service](https://aws.amazon.com/elasticsearch-service/). See [the AWS documentation](https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-request-signing.html#es-request-signing-ruby) for an example.
330
417
 
331
418
  You can also initialize the transport class yourself, and pass it to the client constructor
332
419
  as the `transport` argument:
333
420
 
334
- require 'typhoeus'
335
- require 'typhoeus/adapters/faraday'
421
+ ```ruby
422
+ require 'patron'
336
423
 
337
- transport_configuration = lambda do |f|
338
- f.response :logger
339
- f.adapter :typhoeus
340
- end
424
+ transport_configuration = lambda do |f|
425
+ f.response :logger
426
+ f.adapter :patron
427
+ end
341
428
 
342
- transport = Elasticsearch::Transport::Transport::HTTP::Faraday.new \
343
- hosts: [ { host: 'localhost', port: '9200' } ],
344
- &transport_configuration
429
+ transport = Elasticsearch::Transport::Transport::HTTP::Faraday.new \
430
+ hosts: [ { host: 'localhost', port: '9200' } ],
431
+ &transport_configuration
432
+
433
+ # Pass the transport to the client
434
+ #
435
+ client = Elasticsearch::Client.new transport: transport
436
+ ```
345
437
 
346
- # Pass the transport to the client
347
- #
348
- client = Elasticsearch::Client.new transport: transport
349
438
 
350
439
  Instead of passing the transport to the constructor, you can inject it at run time:
351
440
 
data/Rakefile CHANGED
@@ -1,6 +1,19 @@
1
- # Licensed to Elasticsearch B.V under one or more agreements.
2
- # Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
3
- # See the LICENSE file in the project root for more information
1
+ # Licensed to Elasticsearch B.V. under one or more contributor
2
+ # license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright
4
+ # ownership. Elasticsearch B.V. licenses this file to you under
5
+ # the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
4
17
 
5
18
  require "bundler/gem_tasks"
6
19
 
@@ -1,6 +1,19 @@
1
- # Licensed to Elasticsearch B.V under one or more agreements.
2
- # Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
3
- # See the LICENSE file in the project root for more information
1
+ # Licensed to Elasticsearch B.V. under one or more contributor
2
+ # license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright
4
+ # ownership. Elasticsearch B.V. licenses this file to you under
5
+ # the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
4
17
 
5
18
  # coding: utf-8
6
19
  lib = File.expand_path('../lib', __FILE__)
@@ -8,74 +21,55 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
8
21
  require 'elasticsearch/transport/version'
9
22
 
10
23
  Gem::Specification.new do |s|
11
- s.name = "elasticsearch-transport"
24
+ s.name = 'elasticsearch-transport'
12
25
  s.version = Elasticsearch::Transport::VERSION
13
- s.authors = ["Karel Minarik"]
14
- s.email = ["karel.minarik@elasticsearch.org"]
15
- s.summary = "Ruby client for Elasticsearch."
16
- s.homepage = "https://github.com/elasticsearch/elasticsearch-ruby/tree/master/elasticsearch-transport"
17
- s.license = "Apache-2.0"
18
-
26
+ s.authors = ['Karel Minarik']
27
+ s.email = ['karel.minarik@elasticsearch.org']
28
+ s.summary = 'Ruby client for Elasticsearch.'
29
+ s.homepage = 'https://www.elastic.co/guide/en/elasticsearch/client/ruby-api/7.x/index.html'
30
+ s.license = 'Apache-2.0'
31
+ s.metadata = {
32
+ 'homepage_uri' => 'https://www.elastic.co/guide/en/elasticsearch/client/ruby-api/7.x/index.html',
33
+ 'changelog_uri' => 'https://github.com/elastic/elasticsearch-ruby/blob/7.x/CHANGELOG.md',
34
+ 'source_code_uri' => 'https://github.com/elastic/elasticsearch-ruby/tree/7.x/elasticsearch-transport',
35
+ 'bug_tracker_uri' => 'https://github.com/elastic/elasticsearch-ruby/issues'
36
+ }
19
37
  s.files = `git ls-files`.split($/)
20
38
  s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
21
39
  s.test_files = s.files.grep(%r{^(test|spec|features)/})
22
- s.require_paths = ["lib"]
23
-
24
- s.extra_rdoc_files = [ "README.md", "LICENSE" ]
25
- s.rdoc_options = [ "--charset=UTF-8" ]
26
-
27
- s.required_ruby_version = '>= 1.9'
28
-
29
- s.add_dependency "multi_json"
30
- s.add_dependency "faraday", '>= 0.14', "< 1"
31
-
32
- if defined?(RUBY_VERSION) && RUBY_VERSION < '1.9'
33
- s.add_dependency "system_timer"
34
- end
35
-
36
- s.add_development_dependency "bundler"
37
-
38
- if defined?(RUBY_VERSION) && RUBY_VERSION > '1.9'
39
- s.add_development_dependency "rake", "~> 11.1"
40
- else
41
- s.add_development_dependency "rake", "< 11.0"
42
- end
43
-
44
- s.add_development_dependency "ansi"
45
- s.add_development_dependency "shoulda-context"
46
- s.add_development_dependency "mocha"
47
- s.add_development_dependency "yard"
48
- s.add_development_dependency "pry"
40
+ s.require_paths = ['lib']
49
41
 
50
- # Gems for testing integrations
51
- s.add_development_dependency "curb" unless defined? JRUBY_VERSION
52
- s.add_development_dependency "patron" unless defined? JRUBY_VERSION
53
- s.add_development_dependency "typhoeus", '~> 0.6'
54
- s.add_development_dependency "net-http-persistent"
55
- s.add_development_dependency "httpclient"
56
- s.add_development_dependency "manticore", '~> 0.6' if defined? JRUBY_VERSION
57
- s.add_development_dependency "hashie"
42
+ s.extra_rdoc_files = [ 'README.md', 'LICENSE' ]
43
+ s.rdoc_options = [ '--charset=UTF-8' ]
58
44
 
59
- # Prevent unit test failures on Ruby 1.8
60
- if defined?(RUBY_VERSION) && RUBY_VERSION < '1.9'
61
- s.add_development_dependency "test-unit", '~> 2'
62
- s.add_development_dependency "json", '~> 1.8'
63
- end
45
+ s.required_ruby_version = '>= 2.4'
64
46
 
65
- if defined?(RUBY_VERSION) && RUBY_VERSION > '1.9'
66
- s.add_development_dependency "minitest"
67
- s.add_development_dependency "minitest-reporters"
68
- s.add_development_dependency "elasticsearch-extensions"
69
- s.add_development_dependency "ruby-prof" unless defined?(JRUBY_VERSION) || defined?(Rubinius)
70
- s.add_development_dependency "require-prof" unless defined?(JRUBY_VERSION) || defined?(Rubinius)
71
- s.add_development_dependency "simplecov", '~> 0.17', '< 0.18'
72
- s.add_development_dependency "simplecov-rcov"
73
- s.add_development_dependency "cane"
74
- end
47
+ s.add_dependency 'multi_json'
48
+ s.add_dependency 'faraday', '~> 1'
75
49
 
76
- if defined?(RUBY_VERSION) && RUBY_VERSION > '2.2'
77
- s.add_development_dependency "test-unit", '~> 2'
78
- end
50
+ s.add_development_dependency 'cane'
51
+ s.add_development_dependency 'curb' unless defined? JRUBY_VERSION
52
+ s.add_development_dependency 'elasticsearch-extensions'
53
+ s.add_development_dependency 'minitest'
54
+ s.add_development_dependency 'minitest-reporters'
55
+ s.add_development_dependency 'rake', '~> 13'
56
+ s.add_development_dependency 'require-prof' unless defined?(JRUBY_VERSION) || defined?(Rubinius)
57
+ s.add_development_dependency 'ruby-prof' unless defined?(JRUBY_VERSION) || defined?(Rubinius)
58
+ s.add_development_dependency 'simplecov', '~> 0.17', '< 0.18'
59
+ s.add_development_dependency 'simplecov-rcov'
60
+ s.add_development_dependency 'ansi'
61
+ s.add_development_dependency 'hashie'
62
+ s.add_development_dependency 'httpclient'
63
+ s.add_development_dependency 'manticore', '~> 0.6' if defined? JRUBY_VERSION
64
+ s.add_development_dependency 'mocha'
65
+ s.add_development_dependency 'net-http-persistent'
66
+ s.add_development_dependency 'patron' unless defined? JRUBY_VERSION
67
+ s.add_development_dependency 'pry'
68
+ s.add_development_dependency 'shoulda-context'
69
+ s.add_development_dependency 'test-unit', '~> 2'
70
+ s.add_development_dependency 'typhoeus', '~> 0.6'
71
+ s.add_development_dependency 'yard'
72
+ s.add_development_dependency 'bundler'
79
73
 
80
74
  s.description = <<-DESC.gsub(/^ /, '')
81
75
  Ruby client for Elasticsearch. See the `elasticsearch` gem for full integration.