Question

Je développe actuellement une application basée sur rack et que vous souhaitez rediriger toutes les requêtes de fichiers (par exemple.) De filename.filetype dans un dossier spécifié.

rack :: statique ne supporte que les demandes de fichiers pour un dossier spécial (par exemple. "/ Media").

Dois-je écrire un propre middleware Rack ou une solution ne hors-the-box existe?

Cordialement

Était-ce utile?

La solution

Pour rediriger toutes les requêtes à un chemin particulier, utilisez Rack::File ( pour une raison quelconque cette classe est absente dans la documentation récente, mais il est encore une partie de le dernier rack):

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

Pour rediriger toutes les requêtes, et ajouter un index HTML de tous les fichiers dans le répertoire cible, utilisez Rack::Directory :

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

Pour combiner plusieurs répertoires ou servir seulement des demandes de la cible dir:

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

# More calls to map if necessary...

# All other requests.
run MyApp.new

Autres conseils

Une mise à jour, la dernière mise en œuvre du rack permet d'utiliser rack :: statique

Exemple:

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

Servira toutes les ressources statiques sous le dossier ./media par rapport à config.ru emplacement.

Vous pourriez être en mesure d'utiliser directement Rack::File. Voici un fichier config.ru vous pouvez brancher sur rackup pour voir fonctionner:

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

run app
run Rack::Directory.new(Dir.pwd)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top