【问题标题】:Ruby Rack Heroku: Serving Static FilesRuby Rack Heroku:提供静态文件
【发布时间】:2013-06-15 20:53:13
【问题描述】:

我已按照 Heroku 指南使用 Ruby Rack (https://devcenter.heroku.com/articles/static-sites-ruby) 部署静态文件,但除了 index.html 之外,我无法访问 \public 中的任何 HTML 文件。也就是说,localhost:9292/test.html 仍然映射到index.html。 (我所有的样式和 js 文件都正确服务)。

下面是我的config.ru 文件。我知道出了什么问题,但不确定有效的解决方案?

use Rack::Static,    :urls => ["/images", "/js", "/css"],   :root => "public"

run lambda { |env|   [
    200, 
    {
      'Content-Type'  => 'text/html', 
      'Cache-Control' => 'public, max-age=86400' 
    },
    File.open('public/index.html', File::RDONLY)   ] }

【问题讨论】:

    标签: ruby heroku rack


    【解决方案1】:

    我没有 Ruby 经验,我发现这个样板项目在尝试将静态网站部署到 Heroku 时很有帮助:

    heroku-static-site

    特别是,确保除了config.ru 之外,您还有GemfileGemfile.lock 文件。

    作者的项目结构在根目录中托管所有内容,但您可以轻松地将所有内容移动到 public/ 并按照 @looby 的建议更正 config.ru

    【讨论】:

      【解决方案2】:

      对于您的config.ru 文件,请尝试:

      use Rack::Static,
          :urls => ["/images", "/js", "/css"],
          :root => "public"
      
      run Rack::File.new("public")
      

      您也可以用run Rack::Directory.new("public") 替换最后一行,这将提供您的所有文件,但如果有人转到目录的 url(如根目录),则会提供类似文件浏览器的界面

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-16
        • 1970-01-01
        • 1970-01-01
        • 2015-07-30
        • 2013-01-13
        • 2021-12-30
        • 2012-12-03
        • 2019-01-19
        相关资源
        最近更新 更多