2013-09-23 67 views
4

我想链接到Sinatra设置的默认公共目录之外的CSS和JavaScript文件。Sinatra - 多个公共目录

我知道我可以使用set :public来更改目录,但我想保留默认目录以及其他'public_2'。

有没有办法做到这一点?

+0

Sinatra不允许多个公共目录。为什么你需要2个公共目录是否有特定的原因?有什么逻辑文件驻留在哪个目录(例如1包含图像,其他JavaScript文件,...)?或者你想要某种合并的内容,即一个文件可能驻留在任何2个dirs中,sinatra应该透明地为文件提供服务? – koffeinfrei

+0

我想要插入一些将与主应用程序一起运行的代码,但如果需要也可以移除。目前我包含运行主应用程序中包含的文件所需的文件.rb 我知道我可以简单地将CSS包含在主公用文件夹中,但如果我可以避免这种情况,那不是我想要做的事情。 至于逻辑 - “public_2”文件夹将包含css,images和js目录,就像普通公共目录一样。 – doublesidedstickytape

回答

5

您可以使用TryStatic middleware from rack-contrib

require 'rack/contrib/try_static' 

use Rack::TryStatic, :root => 'public_2', :urls => %w[/] 

现在publicpublic_2目录都将被搜索匹配请求(public_2将首先搜索的文件,因为TryStatic中间件将应用程序前被击中本身)。