0

我使用 Sinatra 创建了一个“Hello, World”应用程序,然后推送到 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

到索引的路线可以很好地链接到我的网站 ,但只要我点击第一个帖子,它总是会失败。

:splat我已经为and尝试了很多不同路线的变体,get但似乎无法让它工作?有任何想法吗?

4

1 回答 1

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 将为您提供静态文件

config do
  set :public_folder, File.expand_path(File.join(settings.root, "_site"))
end

# no more to do...
于 2013-11-08T13:13:31.540 回答