blacklight-spotlight 3.0.0.rc6 → 3.0.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: e12354462a54e6452e05a01e1dd5ee3bd423f64c715a4aee8e4fb2413ba3cd6b
4
- data.tar.gz: 38e4d4d33090d3c53e01fe2b87f0b5f5448e49f6470aa893ee88c8f97271fef1
3
+ metadata.gz: 744fbdb9eab230da1278b056d9e86e5474e42641e7392cc2d3e0f1a45c9639bb
4
+ data.tar.gz: 99b069606c5854c4f7361a14d05f7ac4716bf61250e1d1c215094754474a6088
5
5
  SHA512:
6
- metadata.gz: 51c662524cc71e728230452ef634762b44203d425f0b7acae6528b473657c9ff4b8d463d43702cb98abe8ed07ba67d5ecf8efce41dcb883b35389554a7841097
7
- data.tar.gz: deb75ac5fc45e0261804bd17767d1410ab5654b5d9f7322f7aeb0c88a97ec32807ffc45d6f85fb42282649e8859a02279a304e8874720429a13555b1e2e486ce
6
+ metadata.gz: 190fb6c64ce2200ad5123f94fc10f6c9490053eb2b4229cdbf96fd4b82897b2b3a8b1977a597f49f7a6b58a0b84ef3eff2e5157210f4d9f3f0731f368259e089
7
+ data.tar.gz: 4cd54b3fbd339222e04dab49f1c7c3072901034f38fe86202759a601ec8f80a122546a6a1feb21f53c5246e07527b6df87c8656396752cb71c2ca68b524b923d
@@ -31,6 +31,8 @@ module Spotlight
31
31
  end
32
32
  end
33
33
 
34
+ after_save :bust_containing_resource_caches
35
+
34
36
  attr_accessor :upload_id
35
37
 
36
38
  def iiif_url
@@ -87,5 +89,36 @@ module Spotlight
87
89
  def iiif_service_base
88
90
  iiif_tilesource&.sub('/info.json', '')
89
91
  end
92
+
93
+ # This is an unfortunate work-around because:
94
+ # - when this instance is updated through accepts_nested_attributes_for on a parent model,
95
+ # the parent model is not necessarily updated (to bust caches, etc)
96
+ # - this model doesn't have an association back to where it is being used
97
+ # - these images can be used by multiple model instances (e.g. various translations of a feature page)
98
+ # - this model is used by different types of models (polymorphic use), so belongs_to/has_many doesn't help
99
+ # - potentially a problem with https://github.com/rails/rails/issues/26726
100
+ #
101
+ # Ideally, we might create a join table to connect this model to where it is used, but 🤷‍♂️
102
+ # Instead, we check each place this might be used and touch it
103
+ def bust_containing_resource_caches
104
+ if Rails.version > '6'
105
+ Spotlight::Search.where(thumbnail: self).or(Spotlight::Search.where(masthead: self)).touch_all
106
+ Spotlight::Page.where(thumbnail: self).touch_all
107
+ Spotlight::Exhibit.where(thumbnail: self).or(Spotlight::Exhibit.where(masthead: self)).touch_all
108
+ Spotlight::Contact.where(avatar: self).touch_all
109
+ Spotlight::Resources::Upload.where(upload: self).touch_all
110
+ else
111
+ bust_containing_resource_caches_rails5
112
+ end
113
+ end
114
+
115
+ # Rails 5 doesn't support touch_all.
116
+ def bust_containing_resource_caches_rails5
117
+ Spotlight::Search.where(thumbnail: self).or(Spotlight::Search.where(masthead: self)).find_each(&:touch)
118
+ Spotlight::Page.where(thumbnail: self).find_each(&:touch)
119
+ Spotlight::Exhibit.where(thumbnail: self).or(Spotlight::Exhibit.where(masthead: self)).find_each(&:touch)
120
+ Spotlight::Contact.where(avatar: self).find_each(&:touch)
121
+ Spotlight::Resources::Upload.where(upload: self).find_each(&:touch)
122
+ end
90
123
  end
91
124
  end
@@ -1,4 +1,4 @@
1
- <% cache_unless current_user, [current_exhibit, @page] do %>
1
+ <% cache_unless current_user, [current_exhibit, @page, I18n.locale] do %>
2
2
  <h2 class="nav-heading h4"><%= current_exhibit.main_navigations.about.label_or_default %></h2>
3
3
  <ul class="nav sidenav flex-column">
4
4
  <% current_exhibit.about_pages.for_locale.published.each do |page| %>
@@ -7,7 +7,7 @@
7
7
  </li>
8
8
  <% end %>
9
9
  </ul>
10
- <%= cache current_exhibit do %>
10
+ <%= cache [current_exhibit, I18n.locale] do %>
11
11
  <%= render 'contacts' if current_exhibit.contacts.published.present? %>
12
12
  <% end %>
13
13
  <% end %>
@@ -1,12 +1,12 @@
1
- <%= cache [@exhibit, search, I18n.locale] do %>
2
- <% group ||= @group %>
1
+ <% group ||= @group %>
2
+ <%= cache [@exhibit, group || '', search, I18n.locale] do %>
3
3
  <div class="col-md-4 col-12 category">
4
4
  <%= link_to group.present? ? spotlight.exhibit_browse_group_path(@exhibit, group, search) : spotlight.exhibit_browse_path(@exhibit, search) do %>
5
5
  <div class="image-overlay">
6
6
  <%= image_tag(search.thumbnail_image_url || 'spotlight/default_browse_thumbnail.jpg', class: 'img-responsive', alt: '') %>
7
7
  <div class="text-overlay">
8
8
  <h2 class="browse-category-title">
9
- <span class="title"><%= search.title%></span>
9
+ <span class="title"><%= search.title %></span>
10
10
  <% if search.subtitle.present? %><span class="category-subtitle"><%= search.subtitle %></span><% end %>
11
11
  <small class="item-count"><%= t :'spotlight.browse.search.item_count', count: search.count %></small>
12
12
  </h2>
@@ -1,3 +1,3 @@
1
1
  <span class="title"><%= search.title %></span>
2
2
  <% if search.subtitle.present? %><span class="subtitle"><%= search.subtitle %></span><% end %>
3
- <small class="item-count"><%= t :'spotlight.browse.search.item_count', count: params[:browse_q] ? parent_search_count: search.count %></small>
3
+ <small class="item-count"><%= t :'spotlight.browse.search.item_count', count: search.count %></small>
@@ -1,4 +1,4 @@
1
- <% cache_unless current_user, [current_exhibit, @page] do %>
1
+ <% cache_unless current_user, [current_exhibit, @page, I18n.locale] do %>
2
2
  <ol class="nav sidenav flex-column">
3
3
  <% @exhibit.feature_pages.for_locale.published.at_top_level.each do |feature_section| %>
4
4
  <li class="<%= 'active' if current_page? [spotlight, @exhibit, feature_section] %>">
@@ -5,7 +5,7 @@
5
5
  <%= render 'sidebar' %>
6
6
  <% end if @page.display_sidebar?%>
7
7
 
8
- <%= cache_unless current_user, [@page, request.query_string] do %>
8
+ <%= cache_unless current_user, [current_exhibit, @page, I18n.locale, request.query_string] do %>
9
9
  <div class="clearfix">
10
10
  <%= render 'edit_page_link' if can? :edit, @page %>
11
11
  <% if @page.should_display_title? %>
@@ -10,7 +10,7 @@
10
10
 
11
11
  <% views = blacklight_view_config_for_search_block(search_results_block) %>
12
12
  <% if views.length > 1 -%>
13
- <div id="sortAndPerPage" class="clearfix" role="navigation" aria-label="<%= t('blacklight.search.per_page.aria_label', default: 'Results navigation')%>">
13
+ <div id="sortAndPerPage" class="clearfix my-3" role="navigation" aria-label="<%= t('blacklight.search.per_page.aria_label', default: 'Results navigation')%>">
14
14
  <div class="search-widgets float-right">
15
15
  <%= render partial: 'view_type_group', locals: { block: search_results_block } %>
16
16
  </div>
@@ -0,0 +1,9 @@
1
+ class AddIndexesForFeaturedImages < ActiveRecord::Migration[5.2]
2
+ def change
3
+ add_index(:spotlight_searches, [:thumbnail_id])
4
+ add_index(:spotlight_searches, [:masthead_id])
5
+ add_index(:spotlight_exhibits, [:thumbnail_id])
6
+ add_index(:spotlight_exhibits, [:masthead_id])
7
+ add_index(:spotlight_pages, [:thumbnail_id])
8
+ end
9
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Spotlight
4
- VERSION = '3.0.0.rc6'
4
+ VERSION = '3.0.0'
5
5
  end
data/spec/examples.txt CHANGED
@@ -319,12 +319,12 @@ example_id
319
319
  ./spec/features/add_iiif_manifest_spec.rb[1:2] | passed | 0.44223 seconds |
320
320
  ./spec/features/add_iiif_manifest_spec.rb[1:3] | passed | 0.35011 seconds |
321
321
  ./spec/features/add_items_spec.rb[1:1:1] | passed | 0.11038 seconds |
322
- ./spec/features/add_items_spec.rb[1:1:2] | passed | 0.38888 seconds |
322
+ ./spec/features/add_items_spec.rb[1:1:2] | passed | 7.21 seconds |
323
323
  ./spec/features/add_items_spec.rb[1:1:3] | passed | 0.30893 seconds |
324
324
  ./spec/features/add_items_spec.rb[1:1:4] | passed | 0.10614 seconds |
325
325
  ./spec/features/add_items_spec.rb[1:1:5] | passed | 0.1024 seconds |
326
326
  ./spec/features/add_items_spec.rb[1:1:6:1] | passed | 0.12445 seconds |
327
- ./spec/features/add_items_spec.rb[1:2:1] | passed | 1.54 seconds |
327
+ ./spec/features/add_items_spec.rb[1:2:1] | failed | 9.47 seconds |
328
328
  ./spec/features/autocomplete_typeahead_spec.rb[1:1:1:1] | passed | 1.51 seconds |
329
329
  ./spec/features/autocomplete_typeahead_spec.rb[1:1:1:2] | passed | 2.28 seconds |
330
330
  ./spec/features/autocomplete_typeahead_spec.rb[1:1:1:3] | passed | 1.48 seconds |
@@ -1002,17 +1002,18 @@ example_id
1002
1002
  ./spec/models/spotlight/feature_page_spec.rb[1:6:1] | passed | 0.05814 seconds |
1003
1003
  ./spec/models/spotlight/feature_page_spec.rb[1:6:2] | passed | 0.06073 seconds |
1004
1004
  ./spec/models/spotlight/feature_page_spec.rb[1:6:3] | passed | 0.0646 seconds |
1005
- ./spec/models/spotlight/featured_image_spec.rb[1:1:1] | passed | 0.01226 seconds |
1006
- ./spec/models/spotlight/featured_image_spec.rb[1:2:1:1] | passed | 0.00077 seconds |
1007
- ./spec/models/spotlight/featured_image_spec.rb[1:2:1:2] | passed | 0.00066 seconds |
1008
- ./spec/models/spotlight/featured_image_spec.rb[1:2:1:3:1] | passed | 0.00972 seconds |
1009
- ./spec/models/spotlight/featured_image_spec.rb[1:2:2:1] | passed | 0.00075 seconds |
1010
- ./spec/models/spotlight/featured_image_spec.rb[1:2:2:2] | passed | 0.00059 seconds |
1011
- ./spec/models/spotlight/featured_image_spec.rb[1:3:1] | passed | 0.00368 seconds |
1012
- ./spec/models/spotlight/featured_image_spec.rb[1:3:2] | passed | 0.00639 seconds |
1013
- ./spec/models/spotlight/featured_image_spec.rb[1:3:3] | passed | 0.00339 seconds |
1005
+ ./spec/models/spotlight/featured_image_spec.rb[1:1:1] | passed | 0.79698 seconds |
1006
+ ./spec/models/spotlight/featured_image_spec.rb[1:2:1] | unknown | |
1007
+ ./spec/models/spotlight/featured_image_spec.rb[1:3:1:1] | unknown | |
1008
+ ./spec/models/spotlight/featured_image_spec.rb[1:3:1:2] | unknown | |
1009
+ ./spec/models/spotlight/featured_image_spec.rb[1:3:1:3:1] | unknown | |
1010
+ ./spec/models/spotlight/featured_image_spec.rb[1:3:2:1] | unknown | |
1011
+ ./spec/models/spotlight/featured_image_spec.rb[1:3:2:2] | unknown | |
1014
1012
  ./spec/models/spotlight/featured_image_spec.rb[1:4:1] | passed | 0.00095 seconds |
1015
1013
  ./spec/models/spotlight/featured_image_spec.rb[1:4:2] | passed | 0.00084 seconds |
1014
+ ./spec/models/spotlight/featured_image_spec.rb[1:4:3] | unknown | |
1015
+ ./spec/models/spotlight/featured_image_spec.rb[1:5:1] | unknown | |
1016
+ ./spec/models/spotlight/featured_image_spec.rb[1:5:2] | unknown | |
1016
1017
  ./spec/models/spotlight/field_metadata_spec.rb[1:1:1] | passed | 0.04225 seconds |
1017
1018
  ./spec/models/spotlight/field_metadata_spec.rb[1:1:2] | passed | 0.04504 seconds |
1018
1019
  ./spec/models/spotlight/field_metadata_spec.rb[1:1:3:1] | passed | 0.04166 seconds |
@@ -5,6 +5,18 @@ describe Spotlight::FeaturedImage do
5
5
 
6
6
  let(:temp_image) { FactoryBot.create(:temporary_image) }
7
7
 
8
+ describe '#bust_containing_resource_caches' do
9
+ let!(:feature_page) { FactoryBot.create(:feature_page, thumbnail: temp_image) }
10
+ let!(:feature_page2) { FactoryBot.create(:feature_page, thumbnail: temp_image) }
11
+
12
+ it 'changes the updated_at for all resources that might be using this image' do
13
+ temp_image.save
14
+
15
+ expect(feature_page.updated_at).to be < feature_page.reload.updated_at
16
+ expect(feature_page2.updated_at).to be < feature_page2.reload.updated_at
17
+ end
18
+ end
19
+
8
20
  context 'with an uploaded image' do
9
21
  it 'copies the temporary uploaded image to this model' do
10
22
  featured_image.source = 'remote'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: blacklight-spotlight
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0.rc6
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Beer
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2021-04-28 00:00:00.000000000 Z
14
+ date: 2021-05-07 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: activejob-status
@@ -1458,6 +1458,7 @@ files:
1458
1458
  - db/migrate/20210305070001_remove_class_from_sirtrevor_image_blocks.rb
1459
1459
  - db/migrate/20210305171150_create_bulk_updates.rb
1460
1460
  - db/migrate/20210308090000_migrate_caption_values_for_title_key.rb
1461
+ - db/migrate/20210506070809_add_indexes_for_featured_images.rb
1461
1462
  - lib/blacklight/spotlight.rb
1462
1463
  - lib/generators/spotlight/install_generator.rb
1463
1464
  - lib/generators/spotlight/scaffold_resource_generator.rb
@@ -1829,9 +1830,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
1829
1830
  version: '2.6'
1830
1831
  required_rubygems_version: !ruby/object:Gem::Requirement
1831
1832
  requirements:
1832
- - - ">"
1833
+ - - ">="
1833
1834
  - !ruby/object:Gem::Version
1834
- version: 1.3.1
1835
+ version: '0'
1835
1836
  requirements: []
1836
1837
  rubygems_version: 3.2.3
1837
1838
  signing_key: