2014-11-28 3 views
1

지금 당장은 어색하다. 어제 내 앱이 잘 작동하는 순간 중 하나이지만, 갑자기 그렇지 않다. 당신이 관련 될 수 있는지).Sinatra - 모든 요청에 ​​대해 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 : 그것은 개발에 작동하지만 생산에 왜

require './app' 

run SK::App 

그래서 이해가 안 :

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

여기 내 config.ru입니다.

아이디어가 있으십니까?

답변

2

산탄 총에는 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 

이제시나가 경로와 일치하기 전에 대중 디렉토리에서 정적 파일을 제공합니다 :

수정 프로그램은 정적 서버를 활성화하는 것입니다.

+0

다른 답변으로 답변에 돌아 왔습니다. 내'base' 클래스는 다른 디렉토리에 있었고'root' 경로로 엉망이되어'public_folder' 경로로 어지럽게 보였습니다. 그러나 이것도 작동합니다. – daryl