класс ActionDispatch::FileHandler
Action Dispatch FileHandler
Этот конечный пункт предоставляет статические файлы с диска, используя Rack::Files.
Пути URL сопоставляются со статическими файлами в соответствии с ожидаемыми соглашениями: path, path.html, path/index.html.
Сначала проверяются предварительно сжатые версии этих файлов. Поддерживаются файлы Brotli (.br) и gzip (.gz). Если файл path.br существует, этот конечный пункт возвращает этот файл с заголовком content-encoding: br.
Если соответствующий файл не найден, этот конечный пункт отвечает 404 Not Found.
Укажите root каталог для поиска соответствующих файлов, необязательный index: "index" для изменения значения по умолчанию path/index.html, и необязательные дополнительные заголовки ответа.
Константы
- PRECOMPRESSED
-
Accept-Encodingзначение -> расширение файла
Публичные методы класса
# File actionpack/lib/action_dispatch/middleware/static.rb, line 55
def initialize(root, index: "index", headers: {}, precompressed: %i[ br gzip ], compressible_content_types: /\A(?:text\/|application\/javascript|image\/svg\+xml)/)
@root = root.chomp("/").b
@index = index
@precompressed = Array(precompressed).map(&:to_s) | %w[ identity ]
@compressible_content_types = compressible_content_types
@file_server = ::Rack::Files.new(@root, headers)
end Публичные методы экземпляра
# File actionpack/lib/action_dispatch/middleware/static.rb, line 69
def attempt(env)
request = Rack::Request.new env
if request.get? || request.head?
if found = find_file(request.path_info, accept_encoding: request.accept_encoding)
serve request, *found
end
end
end # File actionpack/lib/action_dispatch/middleware/static.rb, line 65 def call(env) attempt(env) || @file_server.call(env) end
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.