如何在我的应用程序中使用rails / asset pipeline / sprockets运行特定的编译任务?
基本上,我为应用程序创建了一组用户创建的css;用户为应用程序的各个部分上传css(安全注意事项等等,已经处理过)。如何运行任务将特定的css集编译到我拥有的主css中?这不是一个实时编译问题,我只是想接受一个输入,将其编译成一个文件,然后根据需要提供服务,这更像是'当我想在其中预编译时,我需要随意预编译这组css正在运行的应用程序'
我正在更新先前实现的内容,我能够随意提供用户生成的css,我想将其与资产管道集成。如何更好地控制资产管道?我假设我需要了解更多关于链轮的知识,但我很好奇有人可以添加什么来帮助。
答案 0 :(得分:0)
每个用户的CSS文件都是可能的,但是以预期的方式使用Sprockets和管道来生成文件会有点麻烦。
要生成用户CSS文件,您必须:
<强> 1。为用户生成清单。
清单将通过sprockets指令包含主要的css,并在结尾处与用户css一起使用self。
清单文件需要一个用户唯一的名称
<强> 2。编译清单。
你不会想要全部编译它们,所以你需要写一些东西来做你想要的。
第3。将新清单添加到管道清单
这是一个YAML文件,它保存管道中清单和文件的名称及其散列的对应部分之间的映射。您需要在不破坏其他条目的情况下将新的(或更新的)文件哈希添加到此。
<强> 4。重新启动您的应用。
这是必需的,因为Rails在启动时读取管道清单,因此在发生这种情况之前您不会看到任何更改。
==
然后,您将能够为用户引用基于用户名的CSS文件。
使用这种方法是每次部署自定义清单时都会被覆盖。
如果要将用户的自定义CSS存储在数据库中,则可以在每次部署时写出自定义用户清单。
另一种方法是使用主要CSS的管道并完全忽略它用于用户CSS,只是做你现在做的事情。在管道CSS的链接上使用,在用户CSS上使用第二个。您仍然可以在创建文件时缩小CSS,但如果额外的请求是不可能的,那么基于上述内容。
祝你好运!