我现在很难过,这是我的应用程序昨天工作正常的时刻之一,但突然间它没有,我不知道为什么(我和#39;我相信你可以联系。)
module SK
module Routes
class Base < Sinatra::Base
include Models
get '/*' do
File.read 'public/index.html'
end
helpers Helpers::API
end
end
end
我正在构建一个Angular应用,所以我需要在每个请求上提供index.html。当我使用shotgun
gem时,一切正常,但只要我使用foreman
将其投入生产,它就会将所有内容(包括资产)作为index.html提供。
这是我的Procfile:
web: bundle exec rackup config.ru -p $PORT
这是我的config.ru:
require './app'
run SK::App
所以我不明白为什么它在开发中有效,但在生产中却没有。
有什么想法吗?
答案 0 :(得分: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将从公共目录提供静态文件。