Class: ActionDispatch::FileHandler
Relationships & Source Files | |
Inherits: | Object |
Defined in: | actionpack/lib/action_dispatch/middleware/static.rb |
Overview
This endpoint serves static files from disk using Rack::File
.
URL paths are matched with static files according to expected conventions: path
, path
.html, path
/index.html.
Precompressed versions of these files are checked first. Brotli (.br) and gzip (.gz) files are supported. If path
.br exists, this endpoint returns that file with a Content-Encoding: br
header.
If no matching file is found, this endpoint responds 404 Not Found.
Pass the ::
directory to search for matching files, an optional index: "index"
to change the default path
/index.html, and optional additional response headers.
Constant Summary
-
PRECOMPRESSED =
Accept-Encoding value -> file extension
{ "br" => ".br", "gzip" => ".gz", "identity" => nil }
Class Method Summary
Instance Method Summary
Constructor Details
.new(root, index: "index", headers: {}, precompressed: %i[ br gzip ],, compressible_content_types: /\A(?:text\/|application\/javascript)/) ⇒ FileHandler
# File 'actionpack/lib/action_dispatch/middleware/static.rb', line 50
def initialize(root, index: "index", headers: {}, precompressed: %i[ br gzip ], compressible_content_types: /\A(?:text\/|application\/javascript)/) @root = root.chomp("/").b @index = index @precompressed = Array(precompressed).map(&:to_s) | %w[ identity ] @compressible_content_types = compressible_content_types @file_server = ::Rack::File.new(@root, headers) end
Instance Method Details
#attempt(env)
[ GitHub ]#call(env)
[ GitHub ]# File 'actionpack/lib/action_dispatch/middleware/static.rb', line 60
def call(env) attempt(env) || @file_server.call(env) end