現在、ラックベースのアプリケーションを開発しており、すべてのファイル要求(filename.filetypeなど)を指定されたフォルダーにリダイレクトしたいと考えています。
Rack :: Staticは、特別なフォルダ( "/ media"など)のファイルリクエストのみをサポートします。
独自の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
更新、最新のRack実装では、使用できます Rack :: Static
例:
use Rack::Static, :urls => ["/media"]
./media
の場所に関連するconfig.ru
フォルダーの下のすべての静的リソースを提供します。
Rack::File
を直接使用できる場合があります。ラックアップに接続して機能することを確認できるconfig.ru
ファイルを次に示します。
app = proc do |env|
Rack::File.new('foo/bar').call(env)
end
run app
run Rack::Directory.new(Dir.pwd)