Pregunta

Actualmente estoy desarrollando una aplicación basada en rack y quiero redirigir todas las peticiones de archivo (por ejemplo). Filename.filetype en una carpeta especificada.

rack :: estático sólo admite solicitudes de archivos de una carpeta especial (por ejemplo. "/ Media").

¿Tengo que escribir un rack propio middleware o hace una solución fuera de la caja existe?

Saludos

¿Fue útil?

Solución

Para redirigir cada solicitud a un camino en particular, utilizar Rack::File ( por alguna razón esta clase está ausente en la documentación reciente, pero es href="http://github.com/rack/rack/blob/master/lib/rack/file.rb" todavía parte de la última rack):

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

Para redirigir todas las peticiones, y añadir un índice de todos los archivos HTML en el directorio de destino, utilice Rack::Directory :

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

Para combinar varios directorios o servir sólo a algunas peticiones del directorio de destino:

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

# More calls to map if necessary...

# All other requests.
run MyApp.new

Otros consejos

Una actualización, la última versión rack permite el uso de rack :: estático

Ejemplo:

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

servirá a todos los recursos estáticos bajo ./media carpeta relativa a config.ru ubicación.

Usted puede ser capaz de utilizar Rack::File directamente. Aquí hay un archivo config.ru se puede conectar a rackup para ver que funcione:

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

run app
run Rack::Directory.new(Dir.pwd)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top