资产管道::特定资源编译

时间:2011-10-14 10:38:21

标签: ruby-on-rails ruby-on-rails-3 asset-pipeline

如何在我的应用程序中使用rails / asset pipeline / sprockets运行特定的编译任务?

基本上,我为应用程序创建了一组用户创建的css;用户为应用程序的各个部分上传css(安全注意事项等等,已经处理过)。如何运行任务将特定的css集编译到我拥有的主css中?这不是一个实时编译问题,我只是想接受一个输入,将其编译成一个文件,然后根据需要提供服务,这更像是'当我想在其中预编译时,我需要随意预编译这组css正在运行的应用程序'

我正在更新先前实现的内容,我能够随意提供用户生成的css,我想将其与资产管道集成。如何更好地控制资产管道?我假设我需要了解更多关于链轮的知识,但我很好奇有人可以添加什么来帮助。

1 个答案:

答案 0 :(得分:0)

每个用户的CSS文件都是可能的,但是以预期的方式使用Sprockets和管道来生成文件会有点麻烦。

要生成用户CSS文件,您必须:

<强> 1。为用户生成清单。

清单将通过sprockets指令包含主要的css,并在结尾处与用户css一起使用self。

清单文件需要一个用户唯一的名称

<强> 2。编译清单。

你不会想要全部编译它们,所以你需要写一些东西来做你想要的。

第3。将新清单添加到管道清单

这是一个YAML文件,它保存管道中清单和文件的名称及其散列的对应部分之间的映射。您需要在不破坏其他条目的情况下将新的(或更新的)文件哈希添加到此。

<强> 4。重新启动您的应用。

这是必需的,因为Rails在启动时读取管道清单,因此在发生这种情况之前您不会看到任何更改。

==

然后,您将能够为用户引用基于用户名的CSS文件。

使用这种方法是每次部署自定义清单时都会被覆盖。

如果要将用户的自定义CSS存储在数据库中,则可以在每次部署时写出自定义用户清单。

另一种方法是使用主要CSS的管道并完全忽略它用于用户CSS,只是做你现在做的事情。在管道CSS的链接上使用,在用户CSS上使用第二个。您仍然可以在创建文件时缩小CSS,但如果额外的请求是不可能的,那么基于上述内容。

祝你好运!