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

Version Path
motor-admin-0.1.44 app/controllers/motor/assets_controller.rb
motor-admin-0.1.43 app/controllers/motor/assets_controller.rb
motor-admin-0.1.42 app/controllers/motor/assets_controller.rb
motor-admin-0.1.41 app/controllers/motor/assets_controller.rb
motor-admin-0.1.40 app/controllers/motor/assets_controller.rb
motor-admin-0.1.39 app/controllers/motor/assets_controller.rb
motor-admin-0.1.37 app/controllers/motor/assets_controller.rb
motor-admin-0.1.36 app/controllers/motor/assets_controller.rb
motor-admin-0.1.35 app/controllers/motor/assets_controller.rb
motor-admin-0.1.34 app/controllers/motor/assets_controller.rb
motor-admin-0.1.33 app/controllers/motor/assets_controller.rb
motor-admin-0.1.32 app/controllers/motor/assets_controller.rb
motor-admin-0.1.31 app/controllers/motor/assets_controller.rb
motor-admin-0.1.29 app/controllers/motor/assets_controller.rb
motor-admin-0.1.28 app/controllers/motor/assets_controller.rb
motor-admin-0.1.27 app/controllers/motor/assets_controller.rb
motor-admin-0.1.25 app/controllers/motor/assets_controller.rb
motor-admin-0.1.23 app/controllers/motor/assets_controller.rb
motor-admin-0.1.22 app/controllers/motor/assets_controller.rb
motor-admin-0.1.21 app/controllers/motor/assets_controller.rb