Sha256: 5a4932dba20453a236e7e40577d7321cc57c72e51ec5dfc8ef5e073a7b7efcd9

Contents?: true

Size: 922 Bytes

Versions: 3

Compression:

Stored size: 922 Bytes

Contents

# frozen_string_literal: true

require "dassets/server/request"
require "dassets/server/response"

# Rack middleware for serving Dassets asset files

module Dassets; end

class Dassets::Server
  def initialize(app)
    @app = app
  end

  # The Rack call interface. The receiver acts as a prototype and runs
  # each request in a clone object unless the +rack.run_once+ variable is
  # set in the environment. Ripped from:
  # http://github.com/rtomayko/rack-cache/blob/master/lib/rack/cache/context.rb
  def call(env)
    if env["rack.run_once"]
      call! env
    else
      clone.call! env
    end
  end

  # The real Rack call interface.
  # if an asset file is being requested, this is an endpoint - otherwise, call
  # on up to the app as normal
  def call!(env)
    if (request = Request.new(env)).for_asset_file?
      Response.new(env, request.asset_file).to_rack
    else
      @app.call(env)
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
dassets-0.15.3 lib/dassets/server.rb
dassets-0.15.2 lib/dassets/server.rb
dassets-0.15.1 lib/dassets/server.rb