Подтвердить что ты не робот

Как обслуживать статические файлы через стойку?

В настоящее время я разрабатываю приложение на стойке и хочу перенаправить все запросы к файлу (например, filename.filetype) в указанную папку.

Rack:: Static поддерживает только запросы файлов для специальной папки (например, "/media" ).

Нужно ли мне писать собственное промежуточное ПО Rack или существует готовое решение?

С наилучшими пожеланиями

4b9b3361

Ответ 1

Чтобы перенаправить каждый запрос на конкретный путь, используйте Rack::File (по какой-либо причине этот класс отсутствует в недавней документации, но он еще часть последней стойки):

run Rack::File.new("/my/path")

Чтобы перенаправить каждый запрос и добавить индекс HTML всех файлов в целевом каталоге, используйте Rack::Directory:

run Rack::Directory.new("/my/path")

Объединить несколько каталогов или обслуживать только некоторые запросы из целевого каталога:

map "/url/prefix" do
  run Rack::File.new("/my/path")
end

# More calls to map if necessary...

# All other requests.
run MyApp.new

Ответ 2

Возможно, вы сможете напрямую использовать Rack::File. Здесь config.ru файл, который вы можете подключить к rawn, чтобы увидеть его работу:

app = proc do |env|
  Rack::File.new('foo/bar').call(env)
end

run app

Ответ 3

Обновление, последняя версия Rack позволяет использовать Rack:: Static

Пример:

use Rack::Static, :urls => ["/media"]

Будет обслуживать все статические ресурсы в папке ./media относительно местоположения config.ru.

Ответ 4

run Rack::Directory.new(Dir.pwd)