How to serve static files via Rack? How to serve static files via Rack? ruby ruby

How to serve static files via Rack?


To redirect every request to a particular path, use Rack::File (for some reason this class is absent in recent documentation, but it is still part of the latest Rack):

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

To redirect every request, and add an HTML index of all files in the target dir, use Rack::Directory:

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

To combine several directories or serve only a some requests from the target dir:

map "/url/prefix" do  run Rack::File.new("/my/path")end# More calls to map if necessary...# All other requests.run MyApp.new


An update, the latest Rack implementation allows you to use Rack::Static

Example:

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

Will serve all static resources under ./media folder relative to config.ru location.


You might be able to use Rack::File directly. Here's a config.ru file you can plug into rackup to see it work:

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