2013-06-19 4 views
2

Я следовал руководству Heroku по развертыванию статических файлов с помощью Ruby Rack (https://devcenter.heroku.com/articles/static-sites-ruby), но мне не удалось получить доступ к любому файлу HTML в \public, кроме index.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

В частности, убедитесь, что у вас также есть Gemfile и Gemfile.lock файлы кроме config.ru.

Структура проекта автора содержит все в корневом каталоге, но вы можете легко переместить все на public/ и исправить config.ru как предложено @looby.

Смежные вопросы