Rack 経由で静的ファイルを提供するにはどうすればよいですか?
質問
現在ラックベースのアプリケーションを開発しており、すべてのファイルリクエストをリダイレクトしたいと考えています(例:ファイル名.ファイルタイプ)を指定したフォルダーにコピーします。
Rack::Static は特別なフォルダー (例:"/メディア")。
独自の Rack ミドルウェアを作成する必要がありますか、それともすぐに使用できるソリューションが存在しますか?
よろしくお願いします
解決
すべてのリクエストを特定のパスにリダイレクトするには、次を使用します。 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
他のヒント
更新、最新のラック実装はあなたがラックを使用することができます::静的の
例:
use Rack::Static, :urls => ["/media"]
./media
の場所にconfig.ru
のフォルダの相対下のすべての静的なリソースを提供されます。
あなたは直接Rack::File
を使用することができるかもしれません。ここでは、rackupに差し込むことができconfig.ru
ファイルは、それが仕事見ています:
app = proc do |env|
Rack::File.new('foo/bar').call(env)
end
run app
run Rack::Directory.new(Dir.pwd)
所属していません StackOverflow