【发布时间】:2012-12-13 13:48:04
【问题描述】:
我正在使用 Rails 3.2 构建一个站点。我接触 Rails 或 Ruby 已经 3 年了,所以我对两者都生疏了,而且我最后一次使用 Rails 是 Rails 2.3。不用说,请原谅下面的任何“简单”问题。
这里是规格
- 多租户 CMS/商店站点
- 每个“商店”(也称为子域)都可以通过 CSS 自定义拥有自己的外观、感觉等
- 可以在应用内的 UI 中执行自定义,允许用户更改 Bootstrap 的基本变量(即
@textColor、@bodyBackground等)
- 可以在应用内的 UI 中执行自定义,允许用户更改 Bootstrap 的基本变量(即
- 我将
less-rails-bootstrapgem 用于 Twitter Bootstrap 外观/感觉等。
以下是挑战
- 我需要能够将 CSS 的变量动态输出到一个文件中,该文件会混合到 Bootstrap 中,以便提取这些变量来创建最终的 CSS
- 当用户更改 CSS 的变量时,现有样式基本上失效。我需要重新编译完整的 CSS 并将其写回磁盘、内存流或其他我可以使用的位置(请记住这是使用
less) - 我需要不同的 CSS 来为每个子域输出。关于如何解决这个问题的任何建议?
让事情进一步复杂化......
...鉴于我基本上必须找到某种方法来即时编译 CSS,这意味着我必须包含 GEMS,而我通常不会在生产环境中。性能将非常重要。有没有办法隔离这个?一旦 CSS 失效并重新生成,我可以获取内容并将其写入磁盘或存储在某些 memcached/redis/etc 中。性能实例。
任何 cmets,即使只是为了给我指明一个大致的方向,我都会感激不尽。
谢谢!
【问题讨论】:
-
您可以在动态添加的脚本中添加
!important之类的规则,以处理那些发生变化的事情。然后你就不必重新编译了 -
这里的部分目标是能够利用 CSS 中变量的优势。这些变量在 Bootstrap 源文件中得到重用。这方面的一个例子是变量
@purple。这允许用户指定我们想要使用的“紫色”的颜色(色调/饱和度等)。然后在多个地方的 Bootstrap 中使用它。不幸的是,常规 CSS 在这里不起作用。 -
Ryan,我正在寻找与您相同的答案,因为我想利用 Bootstrap 变量。当然,它在开发中有效,因为事情是动态编译的。我正在做类似的事情,因为我将客户的较少文件保存在 lib/assets/stylesheets/customers 中。然后在我的 application.html.erb 文件中,我检查是否使用子域访问了该站点,然后提供适当的文件(我在子域之后命名 .less 文件)。你有想过这个吗?如果没有,我会在你的问题上添加我自己的观点,所以我不会欺骗它。
标签: ruby-on-rails ruby ruby-on-rails-3.2 less asset-pipeline