mirror of
https://github.com/discourse/discourse.git
synced 2024-11-25 21:23:43 +08:00
5783f231f8
This value is included when generating static asset URLs. Updating the value will allow site operators to invalidate all asset urls to recover from configuration issues which may have been cached by CDNs/browsers.
58 lines
1.3 KiB
Ruby
58 lines
1.3 KiB
Ruby
# frozen_string_literal: true
|
|
class JavascriptCache < ActiveRecord::Base
|
|
belongs_to :theme_field
|
|
belongs_to :theme
|
|
|
|
validate :content_cannot_be_nil
|
|
|
|
before_save :update_digest
|
|
|
|
def url
|
|
"#{GlobalSetting.cdn_url}#{Discourse.base_path}#{path}"
|
|
end
|
|
|
|
def local_url
|
|
"#{Discourse.base_path}#{path}"
|
|
end
|
|
|
|
private
|
|
|
|
def path
|
|
"/theme-javascripts/#{digest}.js?__ws=#{Discourse.current_hostname}"
|
|
end
|
|
|
|
def update_digest
|
|
self.digest =
|
|
Digest::SHA1.hexdigest("#{content}|#{GlobalSetting.asset_url_salt}") if content_changed?
|
|
end
|
|
|
|
def content_cannot_be_nil
|
|
errors.add(:content, :empty) if content.nil?
|
|
end
|
|
end
|
|
|
|
# == Schema Information
|
|
#
|
|
# Table name: javascript_caches
|
|
#
|
|
# id :bigint not null, primary key
|
|
# theme_field_id :bigint
|
|
# digest :string
|
|
# content :text not null
|
|
# created_at :datetime not null
|
|
# updated_at :datetime not null
|
|
# theme_id :bigint
|
|
# source_map :text
|
|
#
|
|
# Indexes
|
|
#
|
|
# index_javascript_caches_on_digest (digest)
|
|
# index_javascript_caches_on_theme_field_id (theme_field_id) UNIQUE
|
|
# index_javascript_caches_on_theme_id (theme_id) UNIQUE
|
|
#
|
|
# Foreign Keys
|
|
#
|
|
# fk_rails_... (theme_field_id => theme_fields.id) ON DELETE => cascade
|
|
# fk_rails_... (theme_id => themes.id) ON DELETE => cascade
|
|
#
|