blacklight-spotlight 3.0.0.rc6 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
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: