Sha256: a43bdbe58857c4a5418211f650599a9f1bdf8c2ceeb71e289dcf9c1323adeb99
Contents?: true
Size: 1018 Bytes
Versions: 30
Compression:
Stored size: 1018 Bytes
Contents
# frozen_string_literal: true module Motor class AssetsController < ActionController::Metal CACHE_STORE = ActiveSupport::Cache::MemoryStore.new GZIP_TYPES = [ 'application/javascript', 'text/css' ].freeze MIME_TYPES = { '.js' => 'application/javascript', '.css' => 'text/css', '.woff2' => 'font/woff2' }.freeze def show filename = params[:filename] return [404, {}, ''] unless Motor::Assets.manifest.values.include?(filename) assign_headers(filename) self.response_body = CACHE_STORE.fetch(filename) do Motor::Assets.load_asset(filename, gzip: headers['Content-Encoding'] == 'gzip') end end private def assign_headers(filename) content_type = MIME_TYPES[File.extname(filename)] headers['Content-Type'] = content_type headers['Content-Encoding'] = 'gzip' if !Motor.development? && GZIP_TYPES.include?(content_type) headers['Cache-Control'] = 'max-age=31536000' end end end
Version data entries
30 entries across 30 versions & 1 rubygems