Rack 経由で静的ファイルを提供するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/2265036

  •  20-09-2019
  •  | 
  •  

質問

現在ラックベースのアプリケーションを開発しており、すべてのファイルリクエストをリダイレクトしたいと考えています(例:ファイル名.ファイルタイプ)を指定したフォルダーにコピーします。

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)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top