Sinatra - 多个公共目录

5
我想链接到一个Sinatra默认公共目录以外的CSS和JavaScript文件。
我知道可以使用set :public来更改目录,但我想保留默认目录以及其他'public_2'。
有没有办法做到这一点?

Sinatra不允许多个公共目录。您需要2个公共目录的具体原因是什么?是否有一些逻辑来决定哪些文件位于哪个目录中(例如,一个包含图像,另一个包含JavaScript文件等)?还是您希望某种合并内容,即文件可以位于任何2个目录中,并且Sinatra应该透明地提供文件? - koffeinfrei
我想添加一些代码,使其能够与主应用程序一起运行,但如果需要,也可以将其删除。目前,我正在将运行所需的文件包含在main application.rb中。我知道我可以简单地将CSS包含在主公共文件夹中,但如果可能的话,我不想这样做。至于逻辑 - 'public_2'文件夹将包含与正常public文件夹中相同的css、images和js目录。 - ash
1个回答

7
您可以使用rack-contrib中的TryStatic中间件:TryStatic
require 'rack/contrib/try_static'

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

现在,publicpublic_2目录都将被搜索以查找与请求匹配的文件(由于TryStatic中间件会在应用程序本身之前被触发,因此首先会搜索public_2)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接