Spec-Zone.ru › Ruby on Rails 8.1

class ActionDispatch::FileHandler

Родительский класс:
Object

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 -> расширение файла

Методы класса общего доступа

new (root, index: "index", headers: {}, precompressed: %i[ br gzip ], compressible_content_types: /\A(?:text\/|application\/javascript|image\/svg\+xml)/) Показать исходный код
# 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

Методы экземпляра общего доступа

attempt (env) Показать исходный код
# 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
call (env) Показать исходный код
# 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API