blacklight_dynamic_sitemap 0.3.0 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +41 -0
- data/Gemfile +11 -12
- data/README.md +3 -0
- data/app/models/blacklight_dynamic_sitemap/sitemap.rb +19 -6
- data/app/views/blacklight_dynamic_sitemap/sitemap/show.xml.builder +4 -2
- data/blacklight_dynamic_sitemap.gemspec +2 -1
- data/lib/blacklight_dynamic_sitemap/engine.rb +3 -0
- data/lib/blacklight_dynamic_sitemap/version.rb +1 -1
- data/solr/conf/solrconfig.xml +1 -0
- data/tasks/blacklight_dynamic_sitemap.rake +2 -2
- metadata +23 -15
- data/.travis.yml +0 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 44231f5414713681e54dddaf7024e14489b518153160fc12d9b8f0ea6afc5fd9
|
4
|
+
data.tar.gz: 3d3f645e3b37cee0d16a5301a8a7afb47bf334b2270daa495d10efc633aa7fa9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ec836640c85ae903245d3de6217eed3e23bdb7f9aa808b6b23357a423e11866b5ea59ad883b6304e724538efc23ea91da992b76f2cd5e2b97dd8e782e40e8b7a
|
7
|
+
data.tar.gz: 1808f19193c2f9a8130b8e7f4daf38f0e8a6499fa77467699e34a970da9e78eb215bff1883fc4508b9275ecf8deddcd90e725c8be4e9d0eb6054bc152d6f605a
|
@@ -0,0 +1,41 @@
|
|
1
|
+
|
2
|
+
name: CI
|
3
|
+
|
4
|
+
on:
|
5
|
+
push:
|
6
|
+
branches: [ master ]
|
7
|
+
pull_request:
|
8
|
+
branches: [ master ]
|
9
|
+
|
10
|
+
jobs:
|
11
|
+
tests:
|
12
|
+
strategy:
|
13
|
+
fail-fast: false
|
14
|
+
matrix:
|
15
|
+
ruby: ['2.7']
|
16
|
+
rails: ['6.0.3.7', '6.1.3.2', '7.0.3']
|
17
|
+
include:
|
18
|
+
- rails: '7.0.3'
|
19
|
+
ruby: '3.0'
|
20
|
+
|
21
|
+
runs-on: ubuntu-latest
|
22
|
+
steps:
|
23
|
+
- uses: actions/checkout@v2
|
24
|
+
- name: Set up Ruby
|
25
|
+
uses: ruby/setup-ruby@v1
|
26
|
+
with:
|
27
|
+
ruby-version: ${{ matrix.ruby }}
|
28
|
+
- uses: actions/cache@v2
|
29
|
+
with:
|
30
|
+
path: vendor/bundle
|
31
|
+
key: ${{ runner.os }}-gems20210506-${{ hashFiles('**/Gemfile.lock') }}
|
32
|
+
restore-keys: |
|
33
|
+
${{ runner.os }}-gems20210506-
|
34
|
+
- name: Bundle install
|
35
|
+
env:
|
36
|
+
RAILS_VERSION: ${{ matrix.rails }}
|
37
|
+
run: |
|
38
|
+
bundle config path vendor/bundle
|
39
|
+
bundle install
|
40
|
+
- name: Run tests
|
41
|
+
run: bundle exec rake
|
data/Gemfile
CHANGED
@@ -3,11 +3,9 @@ source 'https://rubygems.org'
|
|
3
3
|
# Specify your gem's dependencies in blacklight_dynamic_sitemap.gemspec
|
4
4
|
gemspec
|
5
5
|
|
6
|
-
gem 'rake', '~> 12.0'
|
7
|
-
gem 'rspec', '~> 3.0'
|
8
6
|
# BEGIN ENGINE_CART BLOCK
|
9
|
-
# engine_cart: 2.
|
10
|
-
# engine_cart stanza:
|
7
|
+
# engine_cart: 2.4.0
|
8
|
+
# engine_cart stanza: 2.5.0
|
11
9
|
# the below comes from engine_cart, a gem used to test this Rails engine gem in the context of a Rails app.
|
12
10
|
file = File.expand_path('Gemfile', ENV['ENGINE_CART_DESTINATION'] || ENV['RAILS_ROOT'] || File.expand_path('.internal_test_app', File.dirname(__FILE__)))
|
13
11
|
if File.exist?(file)
|
@@ -27,15 +25,16 @@ else
|
|
27
25
|
else
|
28
26
|
gem 'rails', ENV['RAILS_VERSION']
|
29
27
|
end
|
30
|
-
end
|
31
28
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
29
|
+
case ENV['RAILS_VERSION']
|
30
|
+
when /^6.0/
|
31
|
+
gem 'sass-rails', '>= 6'
|
32
|
+
gem 'webpacker', '~> 4.0'
|
33
|
+
when /^5.[12]/
|
34
|
+
gem 'sass-rails', '~> 5.0'
|
35
|
+
gem 'sprockets', '~> 3.7'
|
36
|
+
gem 'thor', '~> 0.20'
|
37
|
+
end
|
39
38
|
end
|
40
39
|
end
|
41
40
|
# END ENGINE_CART BLOCK
|
data/README.md
CHANGED
@@ -44,6 +44,9 @@ This gem offers several configuration options that can be configured in a Rails
|
|
44
44
|
|
45
45
|
See [engine.rb](https://github.com/sul-dlss/blacklight_dynamic_sitemap/blob/master/lib/blacklight_dynamic_sitemap/engine.rb) for available configurations.
|
46
46
|
|
47
|
+
### Rails version compatibility note
|
48
|
+
Note that the gemspec does not list a lower threshold for Rails version compatibility. This gem has been anecdotally demonstrated to work fine as low as Rails 4.2, but maintaining compatibility of the test suite with rails <5.0 was more complex than practical benefits warranted. Exercise caution when using with Rails <5.0.
|
49
|
+
|
47
50
|
## Development
|
48
51
|
|
49
52
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake ci` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
@@ -7,14 +7,19 @@ module BlacklightDynamicSitemap
|
|
7
7
|
delegate :hashed_id_field, :unique_id_field, :last_modified_field, to: :engine_config
|
8
8
|
|
9
9
|
def get(id)
|
10
|
+
# if someone's hacking URLs (in ways that could potentially generate enormous requests),
|
11
|
+
# just return an empty response
|
12
|
+
return [] if id.length != exponent
|
13
|
+
|
10
14
|
index_connection.select(
|
11
|
-
params: {
|
12
|
-
q:
|
15
|
+
params: show_params(id, {
|
16
|
+
q: '*:*',
|
17
|
+
fq: ["{!prefix f=#{hashed_id_field} v=#{id}}"],
|
13
18
|
fl: [unique_id_field, last_modified_field].join(','),
|
14
19
|
rows: 2_000_000, # Ensure that we do not page this result
|
15
20
|
facet: false,
|
16
21
|
defType: 'lucene'
|
17
|
-
}
|
22
|
+
})
|
18
23
|
).dig('response', 'docs')
|
19
24
|
end
|
20
25
|
|
@@ -24,6 +29,14 @@ module BlacklightDynamicSitemap
|
|
24
29
|
|
25
30
|
private
|
26
31
|
|
32
|
+
def show_params(id, default_params)
|
33
|
+
engine_config.modify_show_params&.call(id, default_params) || default_params
|
34
|
+
end
|
35
|
+
|
36
|
+
def index_params(default_params)
|
37
|
+
engine_config.modify_index_params&.call(default_params) || default_params
|
38
|
+
end
|
39
|
+
|
27
40
|
def index_connection
|
28
41
|
@index_connection ||= Blacklight.default_index.connection
|
29
42
|
end
|
@@ -34,10 +47,10 @@ module BlacklightDynamicSitemap
|
|
34
47
|
|
35
48
|
def max_documents
|
36
49
|
key = 'blacklight_dynamic_sitemap.index_max_docs'
|
37
|
-
expiration =
|
50
|
+
expiration = engine_config.max_documents_expiration
|
38
51
|
Rails.cache.fetch(key, expires_in: expiration) do
|
39
|
-
|
40
|
-
params: { q: '*:*', rows: 0, facet: false }
|
52
|
+
index_connection.select(
|
53
|
+
params: index_params({ q: '*:*', rows: 0, facet: false })
|
41
54
|
)['response']['numFound']
|
42
55
|
end
|
43
56
|
end
|
@@ -6,10 +6,12 @@ xml.urlset(
|
|
6
6
|
'xsi:schemaLocation' => 'http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd',
|
7
7
|
'xmlns' => 'http://www.sitemaps.org/schemas/sitemap/0.9'
|
8
8
|
) do
|
9
|
+
config = BlacklightDynamicSitemap::Engine.config
|
9
10
|
@sitemap_entries.each do |doc|
|
10
11
|
xml.url do
|
11
|
-
xml.loc(main_app.solr_document_url(doc[
|
12
|
-
|
12
|
+
xml.loc(main_app.solr_document_url(doc[config.unique_id_field]))
|
13
|
+
last_modified = doc[config.last_modified_field]
|
14
|
+
xml.lastmod(config.format_last_modified&.call(last_modified) || last_modified)
|
13
15
|
end
|
14
16
|
end
|
15
17
|
end
|
@@ -24,11 +24,12 @@ Gem::Specification.new do |spec|
|
|
24
24
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
25
25
|
spec.require_paths = ['lib']
|
26
26
|
|
27
|
-
spec.add_dependency 'rails'
|
27
|
+
spec.add_dependency 'rails'
|
28
28
|
spec.add_dependency 'blacklight', '> 6.0'
|
29
29
|
|
30
30
|
spec.add_development_dependency 'capybara'
|
31
31
|
spec.add_development_dependency 'engine_cart', '~> 2.0'
|
32
32
|
spec.add_development_dependency 'rspec-rails'
|
33
33
|
spec.add_development_dependency 'solr_wrapper'
|
34
|
+
spec.add_development_dependency 'rake'
|
34
35
|
end
|
@@ -8,5 +8,8 @@ module BlacklightDynamicSitemap
|
|
8
8
|
config.hashed_id_field = 'hashed_id_ssi'
|
9
9
|
config.unique_id_field = 'id'
|
10
10
|
config.last_modified_field = 'timestamp'
|
11
|
+
config.modify_show_params = nil # lambda { |id, default_params| default_params }
|
12
|
+
config.modify_index_params = nil # lambda { |default_params| default_params }
|
13
|
+
config.format_last_modified = nil # lambda { |raw_last_modified| raw_last_modified }
|
11
14
|
end
|
12
15
|
end
|
data/solr/conf/solrconfig.xml
CHANGED
@@ -31,6 +31,7 @@
|
|
31
31
|
|
32
32
|
<!-- solr lib dirs -->
|
33
33
|
<lib dir="${solr.install.dir:../../../..}/contrib/analysis-extras/lib" />
|
34
|
+
<lib dir="${solr.install.dir:../../../..}/modules/analysis-extras/lib" />
|
34
35
|
<lib dir="${solr.install.dir:../../../..}/contrib/analysis-extras/lucene-libs" />
|
35
36
|
|
36
37
|
<dataDir>${solr.data.dir:}</dataDir>
|
@@ -10,7 +10,7 @@ task ci: ['blacklight_dynamic_sitemap:generate'] do
|
|
10
10
|
SolrWrapper.wrap do |solr|
|
11
11
|
solr.with_collection(name: 'blacklight-core', dir: File.join(File.expand_path('..', File.dirname(__FILE__)), 'solr', 'conf')) do
|
12
12
|
within_test_app do
|
13
|
-
system 'RAILS_ENV=test rake blacklight:index:seed'
|
13
|
+
system 'RAILS_ENV=test bundle exec rake blacklight:index:seed'
|
14
14
|
end
|
15
15
|
Rake::Task['spec'].invoke
|
16
16
|
end
|
@@ -36,7 +36,7 @@ namespace :blacklight_dynamic_sitemap do
|
|
36
36
|
solr.with_collection(name: 'blacklight-core', dir: File.join(File.expand_path('..', File.dirname(__FILE__)), 'solr', 'conf')) do
|
37
37
|
|
38
38
|
within_test_app do
|
39
|
-
system 'RAILS_ENV=development rake blacklight:index:seed'
|
39
|
+
system 'RAILS_ENV=development bundle exec rake blacklight:index:seed'
|
40
40
|
system "bundle exec rails s #{args[:rails_server_args]}"
|
41
41
|
end
|
42
42
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: blacklight_dynamic_sitemap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jack Reed
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-06-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -16,20 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
20
|
-
- - "<="
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: '6.1'
|
19
|
+
version: '0'
|
23
20
|
type: :runtime
|
24
21
|
prerelease: false
|
25
22
|
version_requirements: !ruby/object:Gem::Requirement
|
26
23
|
requirements:
|
27
24
|
- - ">="
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version: '
|
30
|
-
- - "<="
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: '6.1'
|
26
|
+
version: '0'
|
33
27
|
- !ruby/object:Gem::Dependency
|
34
28
|
name: blacklight
|
35
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -100,6 +94,20 @@ dependencies:
|
|
100
94
|
- - ">="
|
101
95
|
- !ruby/object:Gem::Version
|
102
96
|
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rake
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
103
111
|
description: Dynamic sitemap.xml for BLacklight
|
104
112
|
email:
|
105
113
|
- phillipjreed@gmail.com
|
@@ -107,10 +115,10 @@ executables: []
|
|
107
115
|
extensions: []
|
108
116
|
extra_rdoc_files: []
|
109
117
|
files:
|
118
|
+
- ".github/workflows/ruby.yml"
|
110
119
|
- ".gitignore"
|
111
120
|
- ".rspec"
|
112
121
|
- ".solr_wrapper"
|
113
|
-
- ".travis.yml"
|
114
122
|
- Gemfile
|
115
123
|
- LICENSE
|
116
124
|
- README.md
|
@@ -150,7 +158,7 @@ licenses:
|
|
150
158
|
metadata:
|
151
159
|
homepage_uri: https://github.com/sul-dlss/blacklight_dynamic_sitemap
|
152
160
|
source_code_uri: https://github.com/sul-dlss/blacklight_dynamic_sitemap
|
153
|
-
post_install_message:
|
161
|
+
post_install_message:
|
154
162
|
rdoc_options: []
|
155
163
|
require_paths:
|
156
164
|
- lib
|
@@ -165,8 +173,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
165
173
|
- !ruby/object:Gem::Version
|
166
174
|
version: '0'
|
167
175
|
requirements: []
|
168
|
-
rubygems_version: 3.
|
169
|
-
signing_key:
|
176
|
+
rubygems_version: 3.2.32
|
177
|
+
signing_key:
|
170
178
|
specification_version: 4
|
171
179
|
summary: Dynamic sitemap.xml for BLacklight
|
172
180
|
test_files: []
|