How to serve static files via Rack?

后端 未结 4 2160
Happy的楠姐
Happy的楠姐 2020-12-04 11:10

I am currently developing a Rack-based application and want to redirect all file requests(e.g. filename.filetype) to a specified folder.

Rack::Static only supports f

相关标签:
4条回答
  • 2020-12-04 11:25

    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)
    end
    
    run app
    
    0 讨论(0)
  • 2020-12-04 11:27
    run Rack::Directory.new(Dir.pwd)
    
    0 讨论(0)
  • 2020-12-04 11:31

    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
    
    0 讨论(0)
  • 2020-12-04 11:31

    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.

    0 讨论(0)
提交回复
热议问题