blacklight 7.37.0 → 7.38.0
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 +4 -4
- data/.github/workflows/ruby.yml +23 -3
- data/VERSION +1 -1
- data/app/helpers/blacklight/url_helper_behavior.rb +3 -2
- data/app/services/blacklight/search_service.rb +9 -1
- data/blacklight.gemspec +1 -1
- data/docker-compose.yml +1 -1
- data/lib/blacklight/abstract_repository.rb +6 -0
- data/lib/blacklight/configuration.rb +4 -0
- data/lib/blacklight/solr/repository.rb +12 -3
- data/spec/models/blacklight/solr/repository_spec.rb +18 -0
- data/tasks/blacklight.rake +5 -5
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 92827fbcd7473cda5ed226586db52428b4f24b1298c50d1d67ef408ccfd94baa
|
4
|
+
data.tar.gz: 37513bedbec7cd84dc92e87cae3686f6e3c3e87f7e56bc13e07e34e84714410b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 560541c83c6adfa1f0aa9c3f9bc5a12ba4415d3a152393ae422da91f46b138dee10335d195c2edd2d9e9f7905885dbce6deed95b8bdad4728e861e04f5186ce7
|
7
|
+
data.tar.gz: '039d446972e1c7270bb487bc9ee0a19ff44a553b9c5cd5bac1947ec1e819406104ebded74edfd6cf9522fa2920334f972353c1e9be6e584257ed67420b59cb76'
|
data/.github/workflows/ruby.yml
CHANGED
@@ -131,6 +131,26 @@ jobs:
|
|
131
131
|
run: bundle exec rake ci
|
132
132
|
env:
|
133
133
|
ENGINE_CART_RAILS_OPTIONS: '--skip-git --skip-keeps --skip-action-cable --skip-test'
|
134
|
+
test_rails7_2:
|
135
|
+
runs-on: ubuntu-latest
|
136
|
+
strategy:
|
137
|
+
matrix:
|
138
|
+
ruby: [3.1, 3.2]
|
139
|
+
env:
|
140
|
+
RAILS_VERSION: 7.2.0
|
141
|
+
steps:
|
142
|
+
- uses: actions/checkout@v2
|
143
|
+
- name: Set up Ruby
|
144
|
+
uses: ruby/setup-ruby@v1
|
145
|
+
with:
|
146
|
+
ruby-version: ${{ matrix.ruby }}
|
147
|
+
bundler: 'default'
|
148
|
+
- name: Install dependencies
|
149
|
+
run: bundle install
|
150
|
+
- name: Run tests
|
151
|
+
run: bundle exec rake ci
|
152
|
+
env:
|
153
|
+
ENGINE_CART_RAILS_OPTIONS: '--skip-keeps --skip-test'
|
134
154
|
test_vc3:
|
135
155
|
runs-on: ubuntu-latest
|
136
156
|
strategy:
|
@@ -176,6 +196,6 @@ jobs:
|
|
176
196
|
docker_build:
|
177
197
|
runs-on: ubuntu-latest
|
178
198
|
steps:
|
179
|
-
|
180
|
-
|
181
|
-
|
199
|
+
- uses: actions/checkout@v3
|
200
|
+
- name: Build docker image
|
201
|
+
run: docker compose build app
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
7.
|
1
|
+
7.38.0
|
@@ -73,12 +73,13 @@ module Blacklight::UrlHelperBehavior
|
|
73
73
|
|
74
74
|
##
|
75
75
|
# Attributes for a link that gives a URL we can use to track clicks for the current search session
|
76
|
+
# We disable turbo prefetch (InstantClick), because since we replace the link with a form, it's just wasted.
|
76
77
|
# @private
|
77
78
|
# @param [SolrDocument] document
|
78
79
|
# @param [Integer] counter
|
79
80
|
# @example
|
80
81
|
# session_tracking_params(SolrDocument.new(id: 123), 7)
|
81
|
-
# => { data: { :
|
82
|
+
# => { data: { context_href: '/catalog/123/track?counter=7&search_id=999' } }
|
82
83
|
def session_tracking_params document, counter
|
83
84
|
path = session_tracking_path(document, per_page: params.fetch(:per_page, search_session['per_page']), counter: counter, search_id: current_search_session.try(:id), document_id: document&.id)
|
84
85
|
|
@@ -86,7 +87,7 @@ module Blacklight::UrlHelperBehavior
|
|
86
87
|
return {}
|
87
88
|
end
|
88
89
|
|
89
|
-
{ data: {
|
90
|
+
{ data: { context_href: path, turbo_prefetch: false } }
|
90
91
|
end
|
91
92
|
private :session_tracking_params
|
92
93
|
|
@@ -146,7 +146,15 @@ module Blacklight
|
|
146
146
|
.merge(blacklight_config.fetch_many_document_params)
|
147
147
|
.merge(extra_controller_params)
|
148
148
|
|
149
|
-
|
149
|
+
# find_many was introduced in Blacklight 8.4. Before that, we used the
|
150
|
+
# regular search method (possibly with a find-many specific `qt` parameter).
|
151
|
+
# In order to support Repository implementations that may not have a find_many,
|
152
|
+
# we'll fall back to search if find_many isn't available.
|
153
|
+
solr_response = if repository.respond_to?(:find_many)
|
154
|
+
repository.find_many(query)
|
155
|
+
else
|
156
|
+
repository.search(query)
|
157
|
+
end
|
150
158
|
|
151
159
|
[solr_response, solr_response.documents]
|
152
160
|
end
|
data/blacklight.gemspec
CHANGED
@@ -25,7 +25,7 @@ Gem::Specification.new do |s|
|
|
25
25
|
|
26
26
|
s.required_ruby_version = '>= 2.5'
|
27
27
|
|
28
|
-
s.add_dependency "rails", '>= 5.1', '< 7.
|
28
|
+
s.add_dependency "rails", '>= 5.1', '< 7.3'
|
29
29
|
s.add_dependency "globalid"
|
30
30
|
s.add_dependency "jbuilder", '~> 2.7'
|
31
31
|
s.add_dependency "kaminari", ">= 0.15" # the pagination (page 1,2,3, etc..) of our search results
|
data/docker-compose.yml
CHANGED
@@ -34,6 +34,12 @@ module Blacklight
|
|
34
34
|
raise NotImplementedError
|
35
35
|
end
|
36
36
|
|
37
|
+
# Find multiple documents by their ids
|
38
|
+
# @param [Hash] _params query parameters
|
39
|
+
def find_many(params, **kwargs)
|
40
|
+
search(params, **kwargs)
|
41
|
+
end
|
42
|
+
|
37
43
|
##
|
38
44
|
# Execute a search query against a search index
|
39
45
|
# @param [Hash] _params query parameters
|
@@ -89,6 +89,10 @@ module Blacklight
|
|
89
89
|
# @!attribute default_document_solr_params
|
90
90
|
# @return [Hash] Default values of parameters to send with every single-document request
|
91
91
|
property :default_document_solr_params, default: {}
|
92
|
+
# @!attribute fetch_many_documents_path
|
93
|
+
# @since v8.4.0
|
94
|
+
# @return [String] The url path (relative to the solr base url) to use when requesting multiple documents by id
|
95
|
+
property :fetch_many_documents_path, default: nil
|
92
96
|
# @!attribute fetch_many_document_params
|
93
97
|
# @since v7.0.0
|
94
98
|
# @return [Hash] Default values of parameters to send with every multi-document request
|
@@ -16,11 +16,20 @@ module Blacklight::Solr
|
|
16
16
|
solr_response
|
17
17
|
end
|
18
18
|
|
19
|
+
# Find multiple documents by their ids
|
20
|
+
# @param [Hash] _params query parameters
|
21
|
+
def find_many(params)
|
22
|
+
search(params: params, path: blacklight_config.fetch_many_documents_path)
|
23
|
+
end
|
24
|
+
|
19
25
|
##
|
20
26
|
# Execute a search query against solr
|
21
27
|
# @param [Hash] params solr query parameters
|
22
|
-
|
23
|
-
|
28
|
+
# @param [String] path solr request handler path
|
29
|
+
def search pos_params = {}, path: nil, params: nil, **kwargs
|
30
|
+
request_params = (params || pos_params).reverse_merge(kwargs).reverse_merge({ qt: blacklight_config.qt })
|
31
|
+
|
32
|
+
send_and_receive(path || default_search_path(request_params), request_params)
|
24
33
|
end
|
25
34
|
|
26
35
|
# @param [Hash] request_params
|
@@ -123,7 +132,7 @@ module Blacklight::Solr
|
|
123
132
|
end
|
124
133
|
|
125
134
|
# @return [String]
|
126
|
-
def
|
135
|
+
def default_search_path(solr_params)
|
127
136
|
return blacklight_config.json_solr_path if blacklight_config.json_solr_path && uses_json_query_dsl?(solr_params)
|
128
137
|
|
129
138
|
blacklight_config.solr_path
|
@@ -73,6 +73,24 @@ RSpec.describe Blacklight::Solr::Repository, api: true do
|
|
73
73
|
end
|
74
74
|
end
|
75
75
|
|
76
|
+
describe '#find_many' do
|
77
|
+
context 'with a configured fetch_many_documents_path' do
|
78
|
+
it 'uses the path' do
|
79
|
+
blacklight_config.fetch_many_documents_path = 'documents'
|
80
|
+
allow(subject.connection).to receive(:send_and_receive).with('documents', anything).and_return(mock_response)
|
81
|
+
expect(subject.find_many({})).to be_a Blacklight::Solr::Response
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
context 'without a configured fetch_many_documents_path' do
|
86
|
+
it 'falls back to the search path' do
|
87
|
+
blacklight_config.solr_path = 'xyz'
|
88
|
+
allow(subject.connection).to receive(:send_and_receive).with('xyz', anything).and_return(mock_response)
|
89
|
+
expect(subject.find_many({})).to be_a Blacklight::Solr::Response
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
76
94
|
describe "#search" do
|
77
95
|
it "uses the search-specific solr path" do
|
78
96
|
blacklight_config.solr_path = 'xyz'
|
data/tasks/blacklight.rake
CHANGED
@@ -21,18 +21,18 @@ def system_with_error_handling(*args)
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def with_solr
|
24
|
-
# We're being invoked by the app entrypoint script and solr is already up via docker
|
24
|
+
# We're being invoked by the app entrypoint script and solr is already up via docker compose
|
25
25
|
if ENV['SOLR_ENV'] == 'docker-compose'
|
26
26
|
yield
|
27
|
-
elsif system('docker
|
28
|
-
# We're not running docker
|
27
|
+
elsif system('docker compose -v')
|
28
|
+
# We're not running `docker compose up' but still want to use a docker instance of solr.
|
29
29
|
begin
|
30
30
|
puts "Starting Solr"
|
31
|
-
system_with_error_handling "docker
|
31
|
+
system_with_error_handling "docker compose up -d solr"
|
32
32
|
yield
|
33
33
|
ensure
|
34
34
|
puts "Stopping Solr"
|
35
|
-
system_with_error_handling "docker
|
35
|
+
system_with_error_handling "docker compose stop solr"
|
36
36
|
end
|
37
37
|
else
|
38
38
|
SolrWrapper.wrap do |solr|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: blacklight
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 7.
|
4
|
+
version: 7.38.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonathan Rochkind
|
@@ -17,7 +17,7 @@ authors:
|
|
17
17
|
autorequire:
|
18
18
|
bindir: exe
|
19
19
|
cert_chain: []
|
20
|
-
date: 2024-
|
20
|
+
date: 2024-08-13 00:00:00.000000000 Z
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
23
23
|
name: rails
|
@@ -28,7 +28,7 @@ dependencies:
|
|
28
28
|
version: '5.1'
|
29
29
|
- - "<"
|
30
30
|
- !ruby/object:Gem::Version
|
31
|
-
version: '7.
|
31
|
+
version: '7.3'
|
32
32
|
type: :runtime
|
33
33
|
prerelease: false
|
34
34
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -38,7 +38,7 @@ dependencies:
|
|
38
38
|
version: '5.1'
|
39
39
|
- - "<"
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: '7.
|
41
|
+
version: '7.3'
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: globalid
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
@@ -957,7 +957,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
957
957
|
- !ruby/object:Gem::Version
|
958
958
|
version: '0'
|
959
959
|
requirements: []
|
960
|
-
rubygems_version: 3.5.
|
960
|
+
rubygems_version: 3.5.15
|
961
961
|
signing_key:
|
962
962
|
specification_version: 4
|
963
963
|
summary: Blacklight provides a discovery interface for any Solr (http://lucene.apache.org/solr)
|