summaryrefslogtreecommitdiff
path: root/app/helpers
diff options
context:
space:
mode:
authorerdgeist <erdgeist@erdgeist.org>2026-07-14 16:52:03 +0200
committererdgeist <erdgeist@erdgeist.org>2026-07-14 16:53:15 +0200
commitffb3c9987c2f820b99e8ad0ad56db8ae0324671c (patch)
tree5f8ae79e6952cc6808ba5d5f827c98b6c78b62df /app/helpers
parentc7ed30918154d801c44f77645ead38d4759d2778 (diff)
Extend static-asset cache-busting to the public layout
mtime_busted_path only ever covered the four admin-only static files. The public layout has the identical exposure -- ccc.css, glightbox's vendored CSS/JS, and public.js are all served straight from public/ with no pipeline fingerprinting either -- just never got the same treatment.
Diffstat (limited to 'app/helpers')
-rw-r--r--app/helpers/admin_helper.rb6
-rw-r--r--app/helpers/application_helper.rb14
2 files changed, 14 insertions, 6 deletions
diff --git a/app/helpers/admin_helper.rb b/app/helpers/admin_helper.rb
index 6c3cbc6..2684fff 100644
--- a/app/helpers/admin_helper.rb
+++ b/app/helpers/admin_helper.rb
@@ -7,10 +7,4 @@ module AdminHelper
7 link_to raw('<span class="inactive">Deutsch</span>'), url_for(params.permit(:locale, :page_path).to_h.merge('locale' => 'de')) 7 link_to raw('<span class="inactive">Deutsch</span>'), url_for(params.permit(:locale, :page_path).to_h.merge('locale' => 'de'))
8 end 8 end
9 end 9 end
10
11 def mtime_busted_path(path)
12 file = Rails.public_path.join(path.sub(%r{\A/}, ""))
13 raise "Static asset not found for cache-busting: #{path} (looked for #{file})" unless File.exist?(file)
14 "#{path}?v=#{File.mtime(file).to_i}"
15 end
16end 10end
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index 87aa82c..0d28661 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -15,4 +15,18 @@ module ApplicationHelper
15 def resolve_kind_text(value) 15 def resolve_kind_text(value)
16 value.respond_to?(:call) ? value.call : value 16 value.respond_to?(:call) ? value.call : value
17 end 17 end
18
19 # Cache-busts a static file living directly under public/, outside the
20 # asset pipeline -- used by both the admin and public layouts, since
21 # neither loads its static CSS/JS through Sprockets (admin_bundle.js is
22 # the one exception; it already gets pipeline fingerprinting for free).
23 # Raises rather than silently omitting the version param: a missing
24 # file here means the page is already broken, and failing loudly beats
25 # a confusing "why is the browser still showing the old version" report
26 # days later.
27 def mtime_busted_path(path)
28 file = Rails.public_path.join(path.sub(%r{\A/}, ""))
29 raise "Static asset not found for cache-busting: #{path} (looked for #{file})" unless File.exist?(file)
30 "#{path}?v=#{File.mtime(file).to_i}"
31 end
18end 32end