blacklight_dynamic_sitemap 0.3.0 → 0.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: efd092440ea6b487972636c1b219cf17a6d1afcf2f10f75d2892125719ce7772
4
- data.tar.gz: 96b2a345f4b6b03cf39b3316bb6581b439511214e245c8d6ab47c674ec2d74bf
3
+ metadata.gz: 0431ca04258abb8bdf5be705182e582d055b095a958ac9d6c5d241a05e50d598
4
+ data.tar.gz: ad93828dbb262af9346ba3c7dd1fc1b78d86edcc46986c0ba0a06009212a024d
5
5
  SHA512:
6
- metadata.gz: 017c6c3459d3fb722cf3bc05eea855c8c33f8f63d622cfa3713149f20a932a31b6620b03f865a6f78a02658b631a67071f14780a524503e8e3b244e036888949
7
- data.tar.gz: 11ea817570658dffaf136c425dddc374dcba98d49fab21808d6250e37c7f168d03ceb274f91f0edd1f864299eb5c9dbf3139a2c5a7dda60fad5640462c6dc685
6
+ metadata.gz: 25eb795290afff88d8fc55b597dcc6dd8f0eacb91ca4010a62c0c179324862749918dbe6898f8e27a6edb972e6acf9f84c5f9ceecc208a5a067e34f6e27cc877
7
+ data.tar.gz: ed8d361d36c650df61fc761316a53f35c1689daac1545e09f6fe8a925fa0e9dcf0d27de4614087e40baf3c2ee918583b28b660057f6fd64db5782cfe7411d856
@@ -0,0 +1,37 @@
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
+ rails: ['5.2.4.4', '6.0.3.4']
16
+
17
+ runs-on: ubuntu-latest
18
+ steps:
19
+ - uses: actions/checkout@v2
20
+ - name: Set up Ruby
21
+ uses: ruby/setup-ruby@v1
22
+ with:
23
+ ruby-version: 2.7
24
+ - uses: actions/cache@v2
25
+ with:
26
+ path: vendor/bundle
27
+ key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}
28
+ restore-keys: |
29
+ ${{ runner.os }}-gems-
30
+ - name: Bundle install
31
+ env:
32
+ RAILS_VERSION: ${{ matrix.rails }}
33
+ run: |
34
+ bundle config path vendor/bundle
35
+ bundle install
36
+ - name: Run tests
37
+ run: bundle exec rake
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: "{!prefix f=#{hashed_id_field} v=#{id}}",
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 = BlacklightDynamicSitemap::Engine.config.max_documents_expiration
50
+ expiration = engine_config.max_documents_expiration
38
51
  Rails.cache.fetch(key, expires_in: expiration) do
39
- Blacklight.default_index.connection.select(
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[BlacklightDynamicSitemap::Engine.config.unique_id_field]))
12
- xml.lastmod(doc[BlacklightDynamicSitemap::Engine.config.last_modified_field])
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,7 +24,10 @@ 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', '>= 5.2', '<= 6.1'
27
+ # Rails <5.0 is not covered by the automated test suite (see `.github/workflows/ruby.yml`).
28
+ # Anecdotally demonstrated to work fine on Rails as low as 4.2, but any lower version
29
+ # threshold would be arbitrary.
30
+ spec.add_dependency 'rails', '<= 6.1'
28
31
  spec.add_dependency 'blacklight', '> 6.0'
29
32
 
30
33
  spec.add_development_dependency 'capybara'
@@ -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
@@ -1,3 +1,3 @@
1
1
  module BlacklightDynamicSitemap
2
- VERSION = '0.3.0'
2
+ VERSION = '0.4.0'
3
3
  end
metadata CHANGED
@@ -1,22 +1,19 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: blacklight_dynamic_sitemap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jack Reed
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-07-29 00:00:00.000000000 Z
11
+ date: 2020-11-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '5.2'
20
17
  - - "<="
21
18
  - !ruby/object:Gem::Version
22
19
  version: '6.1'
@@ -24,9 +21,6 @@ dependencies:
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- version: '5.2'
30
24
  - - "<="
31
25
  - !ruby/object:Gem::Version
32
26
  version: '6.1'
@@ -107,10 +101,10 @@ executables: []
107
101
  extensions: []
108
102
  extra_rdoc_files: []
109
103
  files:
104
+ - ".github/workflows/ruby.yml"
110
105
  - ".gitignore"
111
106
  - ".rspec"
112
107
  - ".solr_wrapper"
113
- - ".travis.yml"
114
108
  - Gemfile
115
109
  - LICENSE
116
110
  - README.md
@@ -1,14 +0,0 @@
1
- ---
2
- language: ruby
3
- cache: bundler
4
-
5
- matrix:
6
- include:
7
- - env: RAILS_VERSION=6.0.3.2
8
- - env: RAILS_VERSION=5.2.4.3
9
-
10
- rvm:
11
- - 2.7.1
12
- notifications:
13
- email: false
14
- jdk: openjdk11