Come per servire i file statici tramite Rack?
Domanda
Attualmente sto sviluppando un'applicazione rack-based e voglio reindirizzare tutte le richieste di file (per es. Filename.filetype) in una cartella specificata.
Rack :: Static supporta solo le richieste di file di una cartella speciale (ad es. "/ Media").
Devo scrivere un proprio middleware rack o fa una soluzione out-of-the-box esiste?
Con i migliori saluti
Soluzione
Per reindirizzare ogni richiesta per un particolare percorso, utilizzare Rack::File
( per qualche motivo questa classe è assente nel recente documentazione, ma è ancora parte l'ultima rack):
run Rack::File.new("/my/path")
Per reindirizzare ogni richiesta, e aggiungere un indice HTML di tutti i file nella directory di destinazione, utilizzare Rack::Directory
:
run Rack::Directory.new("/my/path")
Per combinare diverse directory o servire solo alcune richieste dalla dir di destinazione:
map "/url/prefix" do
run Rack::File.new("/my/path")
end
# More calls to map if necessary...
# All other requests.
run MyApp.new
Altri suggerimenti
Un aggiornamento, l'ultima implementazione rack consente di utilizzare Rack :: Statico
Esempio:
use Rack::Static, :urls => ["/media"]
Servirà tutte le risorse statiche sotto ./media
cartella relativa alla config.ru
posizione.
Potreste essere in grado di utilizzare direttamente Rack::File
. Ecco un file config.ru
è possibile inserirla in rackup per vedere il lavoro:
app = proc do |env|
Rack::File.new('foo/bar').call(env)
end
run app
run Rack::Directory.new(Dir.pwd)