Ruby Rack Heroku:提供静态文件

时间:2013-06-19 10:48:09

标签: ruby heroku rack

我遵循Heroku指南使用Ruby Rack(https://devcenter.heroku.com/articles/static-sites-ruby)部署静态文件,但除了\public之外,我无法访问index.html中的任何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)   ] }

2 个答案:

答案 0 :(得分:3)

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

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

run Rack::File.new("public")

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

答案 1 :(得分:0)

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

heroku-static-site

特别要确保除Gemfile之外还有Gemfile.lockconfig.ru个文件。

作者的项目结构托管根目录中的所有内容,但您可以轻松地将所有内容移至public/,并将@ {1}}更正为@looby建议。