2014-11-28 4 views
1

Я сейчас немного озадачен, это один из тех моментов, когда вчера мое приложение работало нормально, но внезапно это не так, и я понятия не имею, почему (я Я уверен, что вы можете связать).Sinatra - Render index.html по каждому запросу

module SK 
    module Routes 
    class Base < Sinatra::Base 
     include Models 

     get '/*' do 
     File.read 'public/index.html' 
     end 

     helpers Helpers::API 
    end 
    end 
end 

Я создаю приложение с угловым углом, поэтому мне нужно обслуживать index.html по каждому запросу. Все это отлично работает, когда я использую драгоценный камень shotgun, но как только я положил его в производство, используя foreman, он обслуживает все, включая активы, как index.html.

Вот мой PROCFILE:

web: bundle exec rackup config.ru -p $PORT 

Вот мой config.ru:

require './app' 

run SK::App 

Так что я не понимаю, почему она работает в разработке, но не в производстве.

Любые идеи?

ответ

2

Shotgun имеет its own static server, который будет использоваться (чтобы избежать разветвления, если это не требуется). Sinatra также будет обслуживать статические файлы, если они настроены для этого, но using the modular style app disables this by default.

Исправление для того, чтобы статический сервер:

module SK 
    module Routes 
    class Base < Sinatra::Base 

     # add this line: 
     enable :static 

     include Models 

     get '/*' do 
     File.read 'public/index.html' 
     end 

     helpers Helpers::API 
    end 
    end 
end 

Теперь Sinatra будет обслуживать статические файлы из общественной директории, прежде чем пытаться соответствовать маршруту.

+0

Я вернулся, чтобы ответить на этот вопрос другим ответом. Мой «базовый» класс находился в другом каталоге и, казалось, возился с «корневым» путем, таким образом, возился с путём «public_folder». Но это тоже работает. – daryl

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