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

È stato utile?

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)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top