通过Sinatra和Heroku的Jekyll网站 - 无法路由到新帖子

时间:2013-11-07 15:20:17

标签: ruby heroku routes sinatra jekyll

我创造了一个'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 但是当我点击第一个帖子时,它总是失败。

我为:splatget尝试了很多不同路线的变体,但似乎无法让它发挥作用?有什么想法吗?

1 个答案:

答案 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...