Sha256: da50244b5d572e717bb683866fb16e7689108ba7bbc0ead7ae3b1b6c4fc93351

Contents?: true

Size: 921 Bytes

Versions: 1

Compression:

Stored size: 921 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

1 entries across 1 versions & 1 rubygems

Version Path
dassets-0.15.0 lib/dassets/server.rb