自定义:Sinatra中的公共目录无法正常工作

所以,我有一个sinatra应用程序,我正在与为客户托管几个不同的微型网站的应用程序。我将public和views目录结构化的方式是这样的:
sites/
  site1/
    public/
      style.css
    views/
      layout.haml
      general.haml
  site2/
    public/
      style.css
    views/
      layout.haml
      general.haml
现在,当请求进来时,我有以下两行:
set :views, Proc.new { File.join(root, "sites/#{site}/views") }
set :public, Proc.new { File.join(root, "sites/#{site}/public") }
当传入的请求进入,并且站点被定义为“site1”时,视图将完全按照所需的方式工作,并从适当的文件夹中呈现。但是,对“/style.css”路由的调用会返回404错误。 当我在app根目录中创建公共目录并将style.css放在那里时它工作正常。但是,我需要这个工作在逐个站点的基础上。我将离开Sinatra的官方文档,但即使我设置它仍然无法正常工作
enable :static
或者如果我使用
set :static, true
如文档中所述。有任何想法吗?     
已邀请:
我想这与你如何设置
site
有关。如果我正确理解你的要求,我相信你会想要在你的应用程序上使用
site
而不是静态设置。这个例子就是这样做的,并按照我的预期工作:
class Test < Sinatra::Base
  set :public, Proc.new { File.join(site, "public") }
  set :static, true

  register do
    def site
      ["x", "y", "z"][rand * 3]
    end
  end

  get "/" do
    settings.public
  end
end
但是,我不确定Sinatra是以这种方式提供静态文件的,并且可能有更好的解决方案。例如,您可以完全在Nginx或Apache中完成此操作,从而无需让Sinatra提供静态文件。     

要回复问题请先登录注册