【问题标题】:Asset Pipeline :: Specific Resource compilationAsset Pipeline :: 特定资源编译
【发布时间】:2011-10-14 10:38:20
【问题描述】:

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

基本上,我有一组用户为应用程序创建的 css;用户为他们的应用程序部分上传 css(除了安全考虑等,已经处理)。如何运行任务以将特定的 css 集编译到我拥有的主 css 中?这不是实时编译问题,我只想获取输入,将其编译到文件中,然后按需提供,这更像是“当我想在其中预编译时,我需要随意预编译这组 css一个正在运行的应用程序'

我正在更新以前实现的东西,我可以随意地为用户生成的 css 提供服务,我想将它与资产管道集成。如何更好地控制资产管道?我假设我需要了解更多关于 Sprockets 的信息,但我很好奇任何人都可以添加什么来提供帮助。

【问题讨论】:

  • 可能创建一个清单,我可以将一个变量(特定的 css)传递给,然后运行它以输出一个独特的 css 包?

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


【解决方案1】:

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

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

1.为用户生成清单。

清单将通过 sprockets 指令包含主 css,并在末尾需要 self 以及用户 css。

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

2。编译清单。

您不会想要全部编译它们,因此您需要编写一些东西来完成您想要的。

3.将新清单添加到管道清单

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

4.重新启动您的应用。

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

==

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

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

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

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

祝你好运!

【讨论】:

  • 第二个现在更容易处理、排队和输出到缩小文件。
猜你喜欢
  • 1970-01-01
  • 2012-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
相关资源
最近更新 更多