通过http导入SASS部分而不是文件系统

时间:2011-07-28 11:11:39

标签: ruby-on-rails ruby http import sass

我有一个rails项目,我想根据用户变量动态创建一个sass文件(作为用户自定义站点的一种方式)。我需要通过http将@import该文件导入到网站的主sass文件中,因为它是动态生成的,而不是实际写入文件系统。

如何配置:load_paths指令告诉SASS通过http而不是通过文件系统查找该文件?

文档说这是可能的,但我在网上找不到任何例子。 http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#custom_importers

1 个答案:

答案 0 :(得分:5)

本文档讨论的是您可以实现自己的导入程序;以HTTP为例。幸运的是,这样做并不困难。

在这里,我实现了一个简单的HTTP导入程序:https://gist.github.com/1111803

它没有尽可能积极地缓存,你应该知道除了文件系统之外Sass还会使用它来查找所有导入(如果你使用像Compass这样的框架,那么有很多这样的框架)。如果您需要更高的性能,则应该在这种情况下缓存故障。不过,它似乎在我的测试中起作用。

您可以通过要求sass_http.rb文件然后将其添加到加载路径来使用它:

require 'sass_http'
Sass::Plugin.options[:load_paths] ||= []
Sass::Plugin.options[:load_paths] << Sass::Importers::HTTP.new("http://stylesheets.example.com/")

当前路径必须引用目录(即以斜杠结尾)。您应该获得所有常用的调试信息(使用HTTP,而不是文件系统,路径)。