solrb 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3637c02593d33983f84a2551af954a36f29b5699ad027eaae39ba2b31f7337f8
4
- data.tar.gz: 2b39d8bafafed8602c1574b3684ebafa78e834bb0fc2b4d14e5d93fe4c3fa82b
3
+ metadata.gz: a5f653429c9d04cf698507f5a295d6163704bebce83e28af6d37e72c68579218
4
+ data.tar.gz: '0118530a85c2a43f534227e7494482109b38b6bc197a14cccf03e1672dba2fe1'
5
5
  SHA512:
6
- metadata.gz: 6c9725930a7d4386b71c7b8ce64e5add5e71487db16fbe47754420f0c7c6c65df7b6e634a0362b0ceb8d756dae7d3122cf07bf5890f79a582de7765267ad35d0
7
- data.tar.gz: 5e594b4c0ee42a206ec390694be47871192749244be79e6f99b236faf0b52908981bf7ffc6a8b0294409a6b3cb7b1ce32874e49f0a2d668fe20933db1539111e
6
+ metadata.gz: d0ceb6776fad084292047ac498f7112834369526e67a55aa6404fa8c44a9eaba181325a940c84189f09434f020a463509bf0a9d9085ef17784b5df562f3e5fa2
7
+ data.tar.gz: e1340426003c2ab5813f252ea71e358cd87c88ad8c3364894e9a9650ea0b469f34299429c439564db7593b7fb129d605b252c6ef8370b859bbd5f6e6e41cc772
data/Gemfile.lock CHANGED
@@ -1,21 +1,21 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- solrb (0.1.9)
4
+ solrb (0.2.1)
5
5
  addressable
6
6
  faraday
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- addressable (2.5.2)
11
+ addressable (2.6.0)
12
12
  public_suffix (>= 2.0.2, < 4.0)
13
13
  ast (2.4.0)
14
14
  byebug (10.0.2)
15
15
  coderay (1.1.2)
16
16
  diff-lcs (1.3)
17
17
  docile (1.3.1)
18
- faraday (0.15.3)
18
+ faraday (0.15.4)
19
19
  multipart-post (>= 1.2, < 3)
20
20
  jaro_winkler (1.5.1)
21
21
  json (2.1.0)
data/README.md CHANGED
@@ -421,8 +421,8 @@ If you want to run it locally, you can either use [CircleCI CLI](https://circle
421
421
  or do a completely manual setup (for up-to-date steps see circleci config)
422
422
 
423
423
  ```sh
424
- docker pull solr:7.4.0
425
- docker run -it --name test-solr -p 8983:8983/tcp -t solr:7.4.0
424
+ docker pull solr:7.7.1
425
+ docker run -it --name test-solr -p 8983:8983/tcp -t solr:7.7.1
426
426
  # create a core
427
427
  curl 'http://localhost:8983/solr/admin/cores?action=CREATE&name=test-core&configSet=_default'
428
428
  # disable field guessing
@@ -1,4 +1,5 @@
1
1
  require 'solr/request/http_request'
2
+ require 'solr/request/leader_node_selection_strategy'
2
3
 
3
4
  module Solr
4
5
  module Indexing
@@ -11,9 +12,10 @@ module Solr
11
12
  @documents = documents
12
13
  end
13
14
 
14
- def run(commit: false)
15
+ def run(commit: false, options: {})
15
16
  http_request = build_http_request(commit)
16
- Solr::Request::Runner.call(request: http_request)
17
+ runner_options = { node_selection_strategy: Solr::Request::LeaderNodeSelectionStrategy }
18
+ Solr::Request::Runner.call(request: http_request, **runner_options.merge(options))
17
19
  end
18
20
 
19
21
  private
@@ -0,0 +1,28 @@
1
+ module Solr
2
+ module Request
3
+ class LeaderNodeSelectionStrategy
4
+ def self.call(collection_name)
5
+ new(collection_name).call
6
+ end
7
+
8
+ def initialize(collection_name)
9
+ @collection_name = collection_name
10
+ end
11
+
12
+ def call
13
+ return [solr_url] unless Solr.cloud_enabled?
14
+
15
+ [leader_replica_node_for(collection: @collection_name)]
16
+ end
17
+
18
+ private
19
+
20
+ def leader_replica_node_for(collection:)
21
+ shards = Solr.shards_for(collection: collection)
22
+ return unless shards
23
+ first_shard_name = shards.sort.first
24
+ Solr.leader_replica_node_for(collection: collection, shard: first_shard_name)
25
+ end
26
+ end
27
+ end
28
+ end
@@ -56,10 +56,7 @@ module Solr
56
56
 
57
57
  def solr_cloud_collection_urls
58
58
  urls = node_selection_strategy.call(collection_name)
59
- return unless urls
60
- urls.map do |url|
61
- File.join(url, collection_name.to_s)
62
- end
59
+ urls&.map { |u| File.join(u, collection_name.to_s) }
63
60
  end
64
61
 
65
62
  def collection_name
@@ -10,7 +10,7 @@ module Solr
10
10
  full_uri
11
11
  end
12
12
 
13
- def build_request_url(url:,path:, url_params: {})
13
+ def build_request_url(url:, path:, url_params: {})
14
14
  action_url = File.join(url, path).chomp('/')
15
15
  full_uri = Addressable::URI.parse(action_url)
16
16
  full_uri.query_values = url_params if url_params && url_params.any?
data/lib/solr/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Solr
2
- VERSION = '0.2.1'.freeze
2
+ VERSION = '0.2.2'.freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solrb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adriano Luz
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2019-03-15 00:00:00.000000000 Z
13
+ date: 2019-04-03 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: addressable
@@ -238,6 +238,7 @@ files:
238
238
  - lib/solr/request/default_node_selection_strategy.rb
239
239
  - lib/solr/request/first_shard_leader_node_selection_strategy.rb
240
240
  - lib/solr/request/http_request.rb
241
+ - lib/solr/request/leader_node_selection_strategy.rb
241
242
  - lib/solr/request/runner.rb
242
243
  - lib/solr/response.rb
243
244
  - lib/solr/response/header.rb
@@ -273,7 +274,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
273
274
  version: '0'
274
275
  requirements: []
275
276
  rubyforge_project:
276
- rubygems_version: 2.7.8
277
+ rubygems_version: 2.7.6
277
278
  signing_key:
278
279
  specification_version: 4
279
280
  summary: Solr Ruby client with a nice object-oriented API