2013-06-19 77 views
2

我使用Ruby Rack(https://devcenter.heroku.com/articles/static-sites-ruby)遵循了有关部署静态文件的Heroku指南,但我无法访问除index.html之外的\public中的任何HTML文件。即,localhost:9292/test.html仍然映射到index.html。 (所有我的风格和js文件都可以正常使用)。Ruby Rack Heroku:提供静态文件

以下是我的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) ] } 

回答

3

为了您config.ru文件,请尝试:

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

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

你也可以用run Rack::Directory.new("public")替换最后一行这将成为您的所有文件,但会给出一个文件浏览器一样的界面,如果有人去一个目录的URL(如根目录)

0

我没有Ruby的经验,我发现这个样板项目有用时试图部署一个静态网站到Heroku:

heroku-static-site

特别是,确保你也有GemfileGemfile.lock文件除了config.ru

作者的项目结构承载根目录的一切,但你可以很容易的一切移动到public/和纠正config.ru为@looby建议。