在 sinatra 上提供静态文件

serving static files on sinatra

我是第一次开发 Sinatra 应用程序,在服务 javascript 资产时遇到了问题。

我遵循将静态文件放在“public”文件夹中的 Sinatra 惯例,它在本地工作,但是当我们创建一个 Docker 图像时,我们得到一个 404,而这与 localhost 一起工作.

我看到在哪里可以设置 public_folder 我试过这样: http://sinatrarb.com/configuration.html

但仍然是 404'ing。有没有办法获取顶级对象并询问它期望 public_folder 的位置(如 Rails.env)?

您可以检查 settings 对象。

irb(main):001:0> require "sinatra"
=> true
irb(main):002:0> settings.public_folder
=> "/usr/lib/ruby/2.5.0/irb/public"

这允许您创建一条路线,其中 returns 路径,像这样

require 'sinatra'

get '/' do
    settings.public_folder
end

如果没有更多信息,我猜测您的 public 文件夹指向了您 docker 中的错误目录,因为项目 :root 指向的目录与您期望的不同。