使用 Rack 的静态文件服务

Static File serving using Rack

我有这段代码:

require "cuba"
require "mote"
require "mote/render"

Cuba.plugin(Mote::Render)

Cuba.use Rack::Static,
 # urls: %w[/index],
  root: File.expand_path("./public", __dir__)

Cuba.define do
  on(root) do
      render("index", title: "Welcome")
  end

end

我正在尝试将 public 文件夹中的文件(与我 运行 的文件位于同一目录中)命名为 "index.html",但是我在我的网站上收到一条错误消息,提示无法找到它。

No such file or directory @ rb_sysopen - /root/views/index.html.mote

有什么帮助吗?提前致谢!

Cuba 尝试呈现模板,因此您可以将文件重命名为 .mote,它应该可以正常呈现,或者使用类似这样的名称:

res.headers["Content-Type"] = "text/html; charset=utf-8"
res.write(IO.read('/path/to/your/file.html'))

Source 渲染函数的工作原理已经很清楚了。

您也可以在不使用 Rack::Static

的情况下为 css/js 设置自己的自定义路由
on 'css', extension('css') do
    res['Content-Type'] = 'text/css'
    res.write File.read(req.path)
end