代码之家  ›  专栏  ›  技术社区  ›  brainfck

如何通过机架服务静态文件?

  •  38
  • brainfck  · 技术社区  · 16 年前

    我目前正在开发一个基于框架的应用程序,并希望将所有文件请求(例如filename.filetype)重定向到指定的文件夹。

    rack::static仅支持对特殊文件夹(例如“/media”)的文件请求。

    我是否必须编写自己的机架中间件,或者是否存在现成的解决方案?

    最好的问候

    4 回复  |  直到 11 年前
        1
  •  37
  •   molf    16 年前

    要将每个请求重定向到特定路径,请使用 Rack::File (由于某些原因,在最近的文档中没有此类,但是 still part of 最新机架):

    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
    
        2
  •  11
  •   Srikanth Venugopalan    11 年前

    更新,最新的机架实现允许您使用 Rack::Static

    例子:

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

    将为以下所有静态资源提供服务 ./media 相对于的文件夹 config.ru 位置。

        3
  •  10
  •   kejadlen    16 年前

    你可能会使用 Rack::File 直接。这里有一个 config.ru 文件,您可以插入rackup以查看其工作:

    app = proc do |env|
      Rack::File.new('foo/bar').call(env)
    end
    
    run app
    
        4
  •  2
  •   Diego Carrion    13 年前
    run Rack::Directory.new(Dir.pwd)
    
    推荐文章