40

filename.filetype現在、Rackベースのアプリケーションを開発しており、すべてのファイル要求(たとえば)を指定されたフォルダーにリダイレクトしたいと考えています。

Rack::Static特別なフォルダ(「/ media」など)のファイルリクエストのみをサポートします。

独自のRackミドルウェアを作成する必要がありますか、それともすぐに使用できるソリューションがありますか?

4

4 に答える 4

40

すべてのリクエストを特定のパスにリダイレクトするには、次を使用しますRack::File(何らかの理由で、このクラスは最近のドキュメントにはありませんが、最新のRackの一部です)。

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
于 2010-02-16T07:18:03.550 に答える
12

最新のRack実装では、Rack::Staticを使用できます。

例:

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

./media場所に関連するフォルダの下のすべての静的リソースを提供しますconfig.ru

于 2014-08-22T06:44:48.073 に答える
11

直接使用できる場合がありますRack::Fileconfig.ruラックアップに接続して機能することを確認できるファイルは次のとおりです。

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

run app
于 2010-02-16T06:25:00.780 に答える
2
run Rack::Directory.new(Dir.pwd)
于 2012-09-18T00:26:10.220 に答える