我创造了一个'Hello,World'应用程序使用Sinatra然后推送到Heroku并且都工作了。
我创建了一个基本的Jekyll博客,并尝试使用以下路线通过Heroku访问它:
get '/?' do
file.read("_site/index.html")
end
get '/.*.*' do
file.read("_site/#{params[:splat]}")
end
not_found do
file.read("_site/error/index.html")
end
指向索引的路线很正常link to my site 但是当我点击第一个帖子时,它总是失败。
我为:splat
和get
尝试了很多不同路线的变体,但似乎无法让它发挥作用?有什么想法吗?
答案 0 :(得分:0)
在失败的路线中,在file.read
语句之前,添加warn "splat = #{params[:splat]}"
并将结果输出到终端,您可以看到它实际得到的内容,例如。
get '/.*.*' do
warn "splat = #{params[:splat]}"
file.read("_site/#{params[:splat]}")
end
您也可以尝试使用文件的绝对路径,但如果您获得索引页面,则表示不需要:
config do
set :statics, File.expand_path(File.join(settings.root, "_site"))
end
get '/.*.*' do
file.read( File.join settings.statics, params[:splat] )
end
除非您计划使用Sinatra的路线,否则您可以完全删除Sinatra路线,只需将“_site”文件夹设为public_folder,然后Sinatra will do the serving of the static files for you:
config do
set :public_folder, File.expand_path(File.join(settings.root, "_site"))
end
# no more to do...