elasticsearch-transport 7.1.0 → 7.13.3

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 (44) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +13 -9
  3. data/{LICENSE.txt → LICENSE} +0 -0
  4. data/README.md +175 -76
  5. data/Rakefile +1 -1
  6. data/elasticsearch-transport.gemspec +42 -60
  7. data/lib/elasticsearch/transport/client.rb +154 -57
  8. data/lib/elasticsearch/transport/meta_header.rb +135 -0
  9. data/lib/elasticsearch/transport/redacted.rb +1 -1
  10. data/lib/elasticsearch/transport/transport/base.rb +93 -18
  11. data/lib/elasticsearch/transport/transport/connections/collection.rb +3 -6
  12. data/lib/elasticsearch/transport/transport/connections/connection.rb +8 -6
  13. data/lib/elasticsearch/transport/transport/connections/selector.rb +18 -6
  14. data/lib/elasticsearch/transport/transport/errors.rb +1 -1
  15. data/lib/elasticsearch/transport/transport/http/curb.rb +26 -9
  16. data/lib/elasticsearch/transport/transport/http/faraday.rb +27 -5
  17. data/lib/elasticsearch/transport/transport/http/manticore.rb +25 -10
  18. data/lib/elasticsearch/transport/transport/loggable.rb +1 -1
  19. data/lib/elasticsearch/transport/transport/response.rb +1 -2
  20. data/lib/elasticsearch/transport/transport/serializer/multi_json.rb +1 -1
  21. data/lib/elasticsearch/transport/transport/sniffer.rb +20 -12
  22. data/lib/elasticsearch/transport/version.rb +2 -2
  23. data/lib/elasticsearch/transport.rb +1 -1
  24. data/lib/elasticsearch-transport.rb +1 -1
  25. data/spec/elasticsearch/connections/collection_spec.rb +266 -0
  26. data/spec/elasticsearch/connections/selector_spec.rb +174 -0
  27. data/spec/elasticsearch/transport/base_spec.rb +197 -13
  28. data/spec/elasticsearch/transport/client_spec.rb +945 -118
  29. data/spec/elasticsearch/transport/meta_header_spec.rb +265 -0
  30. data/spec/elasticsearch/transport/sniffer_spec.rb +1 -14
  31. data/spec/spec_helper.rb +25 -1
  32. data/test/integration/transport_test.rb +15 -2
  33. data/test/profile/client_benchmark_test.rb +1 -1
  34. data/test/test_helper.rb +1 -1
  35. data/test/unit/connection_test.rb +8 -3
  36. data/test/unit/response_test.rb +2 -2
  37. data/test/unit/serializer_test.rb +1 -1
  38. data/test/unit/transport_base_test.rb +2 -2
  39. data/test/unit/transport_curb_test.rb +2 -2
  40. data/test/unit/transport_faraday_test.rb +3 -3
  41. data/test/unit/transport_manticore_test.rb +30 -14
  42. metadata +87 -60
  43. data/test/unit/connection_collection_test.rb +0 -147
  44. data/test/unit/connection_selector_test.rb +0 -81
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 14188a454b64314c13f7c9279741fc8df5f9f03ff9813f45aeca96abc8da7e39
4
- data.tar.gz: dfcd7ac5fb8e0b2a0450b2939272f88a329581648c47b130d62e1fcead705b44
3
+ metadata.gz: a045f07e51e54095cdd4d050a786070b35eadc7356b5167c99da881738cf5607
4
+ data.tar.gz: 854f2d899cdbbb184ce945a6b6dfa0a1f7f463bcf3d818c4e7f66a28ca81a504
5
5
  SHA512:
6
- metadata.gz: 36e9583f541ec75994cb27479c16f4624d7ea6a9e6f33360d7cac69541fe10a5c2ee2d7f20b2c1231b5fd07ab85cd32baefb236d6ab77ff11635bb23b1d9d801
7
- data.tar.gz: 95faf1016519c04dcafcd6580356dcfb00c8eeb9ef3301bf2ff3c66a90cfcc8ebf676b638ec18f92f708acb5ef01ee2f7ee137f23ed6532774b371e47b02e11f
6
+ metadata.gz: 89c3b0674a119afb4aa397bacf6282bd301862ca4a5aa107b0789c93493644f678414587dd695e3210fdbe8afaed6bf9db8a10ee1a3597767211afb2fb4d4da4
7
+ data.tar.gz: 6706d0c3441f9eed32b7e930e2cd808774bb8de1083109a6681a1433929dc407f324e97bdbaf1bf3dce9c452fc527abc3cbd7ccd071cfbff46977a93af31ba5d
data/Gemfile CHANGED
@@ -6,7 +6,7 @@
6
6
  # not use this file except in compliance with the License.
7
7
  # You may obtain a copy of the License at
8
8
  #
9
- # http://www.apache.org/licenses/LICENSE-2.0
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
10
  #
11
11
  # Unless required by applicable law or agreed to in writing,
12
12
  # software distributed under the License is distributed on an
@@ -20,19 +20,23 @@ source 'https://rubygems.org'
20
20
  # Specify your gem's dependencies in elasticsearch-transport.gemspec
21
21
  gemspec
22
22
 
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
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
25
25
  end
26
26
 
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
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
29
29
  end
30
30
 
31
- if File.exist? File.expand_path("../../elasticsearch/elasticsearch.gemspec", __FILE__)
32
- 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
33
33
  end
34
34
 
35
- group :development do
35
+ group :development, :test do
36
36
  gem 'rspec'
37
- gem 'pry-nav'
37
+ if defined?(JRUBY_VERSION)
38
+ gem 'pry-nav'
39
+ else
40
+ gem 'pry-byebug'
41
+ end
38
42
  end
File without changes
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) or [Typhoeus](https://github.com/typhoeus/typhoeus).
32
+ Just require the library (`require 'patron'`) in your code, and it will be automatically used.
33
+
34
+ Currently these libraries will be automatically detected and used:
35
+ - [Patron](https://github.com/toland/patron)
36
+ - [Typhoeus](https://github.com/typhoeus/typhoeus)
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)**: You need to use v1.4.0 or up since older versions are not compatible with Faraday 1.0.
37
41
 
38
42
  For detailed information, see example configurations [below](#transport-implementations).
39
43
 
@@ -69,6 +73,23 @@ Full documentation is available at <http://rubydoc.info/gems/elasticsearch-trans
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
 
@@ -106,6 +127,22 @@ Another way to configure the URL(s) is to export the `ELASTICSEARCH_URL` variabl
106
127
  The client will automatically round-robin across the hosts
107
128
  (unless you select or implement a different [connection selector](#connection-selector)).
108
129
 
130
+ ### Default port
131
+
132
+ The default port is `9200`. Please specify a port for your host(s) if they differ from this default.
133
+ Please see below for an exception to this when connecting using an Elastic Cloud ID.
134
+
135
+ ### Connect using an Elastic Cloud ID
136
+
137
+ If you are using [Elastic Cloud](https://www.elastic.co/cloud), you can provide your cloud id to the client.
138
+ You must supply your username and password separately, and optionally a port. If no port is supplied,
139
+ port 443 will be used.
140
+
141
+ Note: Do not enable sniffing when using Elastic Cloud. The nodes are behind a load balancer so
142
+ Elastic Cloud will take care of everything for you.
143
+
144
+ Elasticsearch::Client.new(cloud_id: 'name:bG9jYWxob3N0JGFiY2QkZWZnaA==', user: 'elastic', password: 'changeme')
145
+
109
146
  ### Authentication
110
147
 
111
148
  You can pass the authentication credentials, scheme and port in the host configuration hash:
@@ -128,35 +165,114 @@ use the `transport_options` option:
128
165
  Elasticsearch::Client.new url: 'https://username:password@example.com:9200',
129
166
  transport_options: { ssl: { ca_file: '/path/to/cacert.pem' } }
130
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
+
131
188
  ### Logging
132
189
 
133
- To log requests and responses to standard output with the default logger (an instance of Ruby's {::Logger} class),
134
- set the `log` argument:
190
+ To log requests and responses to standard output with the default logger (an instance of Ruby's {::Logger} class), set the `log` argument to true:
191
+
192
+ ```ruby
193
+ Elasticsearch::Client.new(log: true)
194
+ ```
195
+
196
+ You can also use [ecs-logging](https://github.com/elastic/ecs-logging-ruby). `ecs-logging` is a set of libraries that allows you to transform your application logs to structured logs that comply with the [Elastic Common Schema (ECS)](https://www.elastic.co/guide/en/ecs/current/ecs-reference.html):
197
+
198
+ ```ruby
199
+ logger = EcsLogging::Logger.new($stdout)
200
+ Elasticsearch::Client.new(logger: logger)
201
+ ```
135
202
 
136
- Elasticsearch::Client.new log: true
137
203
 
138
204
  To trace requests and responses in the _Curl_ format, set the `trace` argument:
139
205
 
140
- Elasticsearch::Client.new trace: true
206
+ ```ruby
207
+ Elasticsearch::Client.new(trace: true)
208
+ ```
141
209
 
142
210
  You can customize the default logger or tracer:
143
211
 
212
+ ```ruby
144
213
  client.transport.logger.formatter = proc { |s, d, p, m| "#{s}: #{m}\n" }
145
214
  client.transport.logger.level = Logger::INFO
215
+ ```
146
216
 
147
- Or, you can use a custom {::Logger} instance:
217
+ Or, you can use a custom `::Logger` instance:
148
218
 
149
- Elasticsearch::Client.new logger: Logger.new(STDERR)
219
+ ```ruby
220
+ Elasticsearch::Client.new(logger: Logger.new(STDERR))
221
+ ```
150
222
 
151
223
  You can pass the client any conforming logger implementation:
152
224
 
153
- require 'logging' # https://github.com/TwP/logging/
225
+ ```ruby
226
+ require 'logging' # https://github.com/TwP/logging/
227
+
228
+ log = Logging.logger['elasticsearch']
229
+ log.add_appenders Logging.appenders.stdout
230
+ log.level = :info
231
+
232
+ client = Elasticsearch::Client.new(logger: log)
233
+ ```
234
+
235
+ ### Custom HTTP Headers
236
+
237
+ You can set a custom HTTP header on the client's initializer:
238
+
239
+ ```ruby
240
+ client = Elasticsearch::Client.new(
241
+ transport_options: {
242
+ headers:
243
+ {user_agent: "My App"}
244
+ }
245
+ )
246
+ ```
247
+
248
+ You can also pass in `headers` as a parameter to any of the API Endpoints to set custom headers for the request:
154
249
 
155
- log = Logging.logger['elasticsearch']
156
- log.add_appenders Logging.appenders.stdout
157
- log.level = :info
250
+ ```ruby
251
+ client.search(index: 'myindex', q: 'title:test', headers: {user_agent: "My App"})
252
+ ```
253
+
254
+ ### Identifying running tasks with X-Opaque-Id
255
+
256
+ 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:
257
+
258
+ ```ruby
259
+ client = Elasticsearch::Client.new
260
+ client.search(index: 'myindex', q: 'title:test', opaque_id: '123456')
261
+ ```
262
+ The search request will include the following HTTP Header:
263
+ ```
264
+ X-Opaque-Id: 123456
265
+ ```
158
266
 
159
- client = Elasticsearch::Client.new logger: log
267
+ 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:
268
+ ```ruby
269
+ client = Elasticsearch::Client.new(opaque_id_prefix: 'eu-west1')
270
+ client.search(index: 'myindex', q: 'title:test', opaque_id: '123456')
271
+ ```
272
+ The request will include the following HTTP Header:
273
+ ```
274
+ X-Opaque-Id: eu-west1_123456
275
+ ```
160
276
 
161
277
  ### Setting Timeouts
162
278
 
@@ -183,11 +299,16 @@ on a different host:
183
299
 
184
300
  Elasticsearch::Client.new hosts: ['localhost:9200', 'localhost:9201'], retry_on_failure: true
185
301
 
186
- You can specify how many times should the client retry the request before it raises an exception
187
- (the default is 3 times):
302
+ By default, the client will retry the request 3 times. You can specify how many times to retry before it raises an exception by passing a number to `retry_on_failure`:
188
303
 
189
304
  Elasticsearch::Client.new hosts: ['localhost:9200', 'localhost:9201'], retry_on_failure: 5
190
305
 
306
+ These two parameters can also be used together:
307
+
308
+ ```ruby
309
+ Elasticsearch::Client.new hosts: ['localhost:9200', 'localhost:9201'], retry_on_status: [502, 503], retry_on_failure: 10
310
+ ```
311
+
191
312
  ### Reloading Hosts
192
313
 
193
314
  Elasticsearch by default dynamically discovers new nodes in the cluster. You can leverage this
@@ -252,25 +373,29 @@ preferring HTTP clients with support for persistent connections.
252
373
 
253
374
  To use the [_Patron_](https://github.com/toland/patron) HTTP, for example, just require it:
254
375
 
255
- require 'patron'
376
+ ```ruby
377
+ require 'patron'
378
+ ```
256
379
 
257
380
  Then, create a new client, and the _Patron_ gem will be used as the "driver":
258
381
 
259
- client = Elasticsearch::Client.new
382
+ ```ruby
383
+ client = Elasticsearch::Client.new
260
384
 
261
- client.transport.connections.first.connection.builder.handlers
262
- # => [Faraday::Adapter::Patron]
385
+ client.transport.connections.first.connection.builder.adapter
386
+ # => Faraday::Adapter::Patron
263
387
 
264
- 10.times do
265
- client.nodes.stats(metric: 'http')['nodes'].values.each do |n|
266
- puts "#{n['name']} : #{n['http']['total_opened']}"
267
- end
268
- end
388
+ 10.times do
389
+ client.nodes.stats(metric: 'http')['nodes'].values.each do |n|
390
+ puts "#{n['name']} : #{n['http']['total_opened']}"
391
+ end
392
+ end
269
393
 
270
- # => Stiletoo : 24
271
- # => Stiletoo : 24
272
- # => Stiletoo : 24
273
- # => ...
394
+ # => Stiletoo : 24
395
+ # => Stiletoo : 24
396
+ # => Stiletoo : 24
397
+ # => ...
398
+ ```
274
399
 
275
400
  To use a specific adapter for _Faraday_, pass it as the `adapter` argument:
276
401
 
@@ -292,44 +417,35 @@ constructor, use the `transport_options` key:
292
417
 
293
418
  To configure the _Faraday_ instance directly, use a block:
294
419
 
295
- require 'typhoeus'
296
- require 'typhoeus/adapters/faraday'
420
+ require 'patron'
297
421
 
298
422
  client = Elasticsearch::Client.new(host: 'localhost', port: '9200') do |f|
299
423
  f.response :logger
300
- f.adapter :typhoeus
424
+ f.adapter :patron
301
425
  end
302
426
 
303
- You can use any standard Faraday middleware and plugins in the configuration block,
304
- for example sign the requests for the [AWS Elasticsearch service](https://aws.amazon.com/elasticsearch-service/):
305
-
306
- require 'faraday_middleware/aws_signers_v4'
307
-
308
- client = Elasticsearch::Client.new url: 'https://search-my-cluster-abc123....es.amazonaws.com' do |f|
309
- f.request :aws_signers_v4,
310
- credentials: Aws::Credentials.new(ENV['AWS_ACCESS_KEY'], ENV['AWS_SECRET_ACCESS_KEY']),
311
- service_name: 'es',
312
- region: 'us-east-1'
313
- end
427
+ 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.
314
428
 
315
429
  You can also initialize the transport class yourself, and pass it to the client constructor
316
430
  as the `transport` argument:
317
431
 
318
- require 'typhoeus'
319
- require 'typhoeus/adapters/faraday'
432
+ ```ruby
433
+ require 'patron'
320
434
 
321
- transport_configuration = lambda do |f|
322
- f.response :logger
323
- f.adapter :typhoeus
324
- end
435
+ transport_configuration = lambda do |f|
436
+ f.response :logger
437
+ f.adapter :patron
438
+ end
325
439
 
326
- transport = Elasticsearch::Transport::Transport::HTTP::Faraday.new \
327
- hosts: [ { host: 'localhost', port: '9200' } ],
328
- &transport_configuration
440
+ transport = Elasticsearch::Transport::Transport::HTTP::Faraday.new \
441
+ hosts: [ { host: 'localhost', port: '9200' } ],
442
+ &transport_configuration
443
+
444
+ # Pass the transport to the client
445
+ #
446
+ client = Elasticsearch::Client.new transport: transport
447
+ ```
329
448
 
330
- # Pass the transport to the client
331
- #
332
- client = Elasticsearch::Client.new transport: transport
333
449
 
334
450
  Instead of passing the transport to the constructor, you can inject it at run time:
335
451
 
@@ -458,21 +574,4 @@ can use Ruby 2.x syntax and features.
458
574
 
459
575
  ## License
460
576
 
461
- This software is licensed under the Apache 2 license, quoted below.
462
-
463
- Licensed to Elasticsearch B.V. under one or more contributor
464
- license agreements. See the NOTICE file distributed with
465
- this work for additional information regarding copyright
466
- ownership. Elasticsearch B.V. licenses this file to you under
467
- the Apache License, Version 2.0 (the "License"); you may
468
- not use this file except in compliance with the License.
469
- You may obtain a copy of the License at
470
-
471
- http://www.apache.org/licenses/LICENSE-2.0
472
-
473
- Unless required by applicable law or agreed to in writing,
474
- software distributed under the License is distributed on an
475
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
476
- KIND, either express or implied. See the License for the
477
- specific language governing permissions and limitations
478
- under the License.
577
+ This software is licensed under the [Apache 2 license](./LICENSE).
data/Rakefile CHANGED
@@ -6,7 +6,7 @@
6
6
  # not use this file except in compliance with the License.
7
7
  # You may obtain a copy of the License at
8
8
  #
9
- # http://www.apache.org/licenses/LICENSE-2.0
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
10
  #
11
11
  # Unless required by applicable law or agreed to in writing,
12
12
  # software distributed under the License is distributed on an
@@ -6,7 +6,7 @@
6
6
  # not use this file except in compliance with the License.
7
7
  # You may obtain a copy of the License at
8
8
  #
9
- # http://www.apache.org/licenses/LICENSE-2.0
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
10
  #
11
11
  # Unless required by applicable law or agreed to in writing,
12
12
  # software distributed under the License is distributed on an
@@ -21,73 +21,55 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
21
21
  require 'elasticsearch/transport/version'
22
22
 
23
23
  Gem::Specification.new do |s|
24
- s.name = "elasticsearch-transport"
24
+ s.name = 'elasticsearch-transport'
25
25
  s.version = Elasticsearch::Transport::VERSION
26
- s.authors = ["Karel Minarik"]
27
- s.email = ["karel.minarik@elasticsearch.org"]
28
- s.summary = "Ruby client for Elasticsearch."
29
- s.homepage = "https://github.com/elasticsearch/elasticsearch-ruby/tree/master/elasticsearch-transport"
30
- s.license = "Apache-2.0"
31
-
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
+ }
32
37
  s.files = `git ls-files`.split($/)
33
38
  s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
34
39
  s.test_files = s.files.grep(%r{^(test|spec|features)/})
35
- s.require_paths = ["lib"]
36
-
37
- s.extra_rdoc_files = [ "README.md", "LICENSE.txt" ]
38
- s.rdoc_options = [ "--charset=UTF-8" ]
39
-
40
- s.required_ruby_version = '>= 1.9'
41
-
42
- s.add_dependency "multi_json"
43
- s.add_dependency "faraday"
44
-
45
- if defined?(RUBY_VERSION) && RUBY_VERSION < '1.9'
46
- s.add_dependency "system_timer"
47
- end
48
-
49
- s.add_development_dependency "bundler"
50
-
51
- if defined?(RUBY_VERSION) && RUBY_VERSION > '1.9'
52
- s.add_development_dependency "rake", "~> 11.1"
53
- else
54
- s.add_development_dependency "rake", "< 11.0"
55
- end
56
-
57
- s.add_development_dependency "ansi"
58
- s.add_development_dependency "shoulda-context"
59
- s.add_development_dependency "mocha"
60
- s.add_development_dependency "yard"
61
- s.add_development_dependency "pry"
40
+ s.require_paths = ['lib']
62
41
 
63
- # Gems for testing integrations
64
- s.add_development_dependency "curb" unless defined? JRUBY_VERSION
65
- s.add_development_dependency "patron" unless defined? JRUBY_VERSION
66
- s.add_development_dependency "typhoeus", '~> 0.6'
67
- s.add_development_dependency "net-http-persistent"
68
- s.add_development_dependency "manticore", '~> 0.6' if defined? JRUBY_VERSION
69
- s.add_development_dependency "hashie"
42
+ s.extra_rdoc_files = [ 'README.md', 'LICENSE' ]
43
+ s.rdoc_options = [ '--charset=UTF-8' ]
70
44
 
71
- # Prevent unit test failures on Ruby 1.8
72
- if defined?(RUBY_VERSION) && RUBY_VERSION < '1.9'
73
- s.add_development_dependency "test-unit", '~> 2'
74
- s.add_development_dependency "json", '~> 1.8'
75
- end
45
+ s.required_ruby_version = '>= 2.4'
76
46
 
77
- if defined?(RUBY_VERSION) && RUBY_VERSION > '1.9'
78
- s.add_development_dependency "minitest"
79
- s.add_development_dependency "minitest-reporters"
80
- s.add_development_dependency "elasticsearch-extensions"
81
- s.add_development_dependency "ruby-prof" unless defined?(JRUBY_VERSION) || defined?(Rubinius)
82
- s.add_development_dependency "require-prof" unless defined?(JRUBY_VERSION) || defined?(Rubinius)
83
- s.add_development_dependency "simplecov"
84
- s.add_development_dependency "simplecov-rcov"
85
- s.add_development_dependency "cane"
86
- end
47
+ s.add_dependency 'multi_json'
48
+ s.add_dependency 'faraday', '~> 1'
87
49
 
88
- if defined?(RUBY_VERSION) && RUBY_VERSION > '2.2'
89
- s.add_development_dependency "test-unit", '~> 2'
90
- 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', '~> 1.4'
71
+ s.add_development_dependency 'yard'
72
+ s.add_development_dependency 'bundler'
91
73
 
92
74
  s.description = <<-DESC.gsub(/^ /, '')
93
75
  Ruby client for Elasticsearch. See the `elasticsearch` gem for full integration.