Публичный каталог не обслуживается с Синатрой
Как следует из названия, я не могу заставить Heroku использовать мои публичные активы.
Локально, при запуске моего приложения с shotgun
оно работает. Но с rackup
(что использует Heroku), CSS и активы 404.
Я попробовал несколько ответов здесь ( один, два, три), но ни один не помог.
Вот моя структура каталогов:
Мой config.ru:
require 'bundler'
Bundler.require
require File.expand_path('../config/environment', __FILE__)
run BikeShareApp
И мой контроллер:
class BikeShareApp < Sinatra::Base
get '/' do
erb :'home/index'
end
get '/stations' do
@stations = Station.all
erb :'stations/index'
end
end
РЕДАКТИРОВАТЬ: Это, как я ссылаюсь на мои активы, кстати
<link href="/css/bootstrap.min.css" rel="stylesheet">
<link href="/css/overwrite.css" rel="stylesheet">
1 ответ
Нашел это.
Следуя этому руководству и положив это в мой config.ru, сработало:
run lambda { |env|
[
200,
{
'Content-Type' => 'text/html',
'Cache-Control' => 'public, max-age=86400'
}
]
}