Как обслуживать статические файлы через стойку?
В настоящее время я разрабатываю приложение на стойке и хочу перенаправить все запросы к файлу (например, filename.filetype) в указанную папку.
Rack:: Static поддерживает только запросы файлов для специальной папки (например, "/media" ).
Нужно ли мне писать собственное промежуточное ПО Rack или существует готовое решение?
С наилучшими пожеланиями
Ответы
Ответ 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)