Публичный каталог не обслуживается с Синатрой

Как следует из названия, я не могу заставить Heroku использовать мои публичные активы.

Локально, при запуске моего приложения с shotgun оно работает. Но с rackup (что использует Heroku), CSS и активы 404.

Я попробовал несколько ответов здесь ( один, два, три), но ни один не помог.

Вот моя структура каталогов:

dir struct

Мой 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'
    }
  ]
}
Другие вопросы по тегам