solrb 0.2.1 → 0.2.2

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.
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