2013-02-15 63 views
0

我有一个Sinatra应用程序,我服务的链接资产从/assets。工作得不错,但由于我是一个完美主义者,为了尽可能保持整洁,我希望从各自的子目录获得资产。
I.e.我希望#{root}/app/assets/stylesheets/application.css.scss可以作为/assets/stylesheets/application.css,而不仅仅是现在的/assets/application.css服务资产从子目录w /在Sinatra链轮

这可能吗? Middleman做了类似的事情,但我不确定它实际上靠什么样的链轮。

回答

0

Middleman静态网站发生器,因此资产预编译,并担任如果他们在一个public directory,这意味着你可以有stylesheets一个子目录,它将成为用于访问的URL的一部分子目录中的资产。

Sprockets编译资产,因为它们被访问,然后对其进行缓存(据我可以看到),并且采用了Rack application从他们逻辑路径服务资产。从链轮自述文件:

逻辑路径是资产源文件相对于其包含目录在加载路径中的其 的路径。例如,如果您的加载路径 包含目录app/assets/javascripts:

资产源文件|逻辑路径
app/assets/javascripts/application.js | application.js
app/assets/javascripts/models/project.js | models/project.js

我没有看到一个明显的设置来改变文档,除非你愿意查看源代码和黑客一点,那么我会说答案是否定的。也许你可以尝试缩短加载路径并查看它是否包含子目录?

+1

Middleman在开发模式下使用动态服务器(并建立在基于Sinatra的Padrino上),并利用Sprockets for includes等。所以我的想法是应该可以在vanilla Sinatra应用程序中模拟此行为以及。 – 2013-02-16 11:47:51

+0

服务器是正交的,重要的是资产是预编译还是编译访问页面。 Middleman [做](https://github.com/middleman/middleman/blob/3.0-stable/middleman-core/middleman-core.gemspec)[不](https://github.com/middleman/middleman/blob /3.0-stable/middleman-more/middleman-more.gemspec)使用Sprockets,这里有[另一个宝石](https://github.com/middleman/middleman-sprockets),它不会在访问时编译它预编译。 – iain 2013-02-16 12:23:35

+0

[查看文档](http://middlemanapp.com/asset-pipeline/),Sprockets由Rails资产管道提供,并不是Middleman的一部分,但是如果它在那里,您可以使用它 - 其他图书馆。 – iain 2013-02-16 12:26:38