我有一段用于编译.scss代码的ruby代码。我正在尝试构建一个自定义导入程序来从DB加载文件。
这是我的红宝石代码:
require 'rubygems'
require 'sass'
require 'sass/plugin'
require './eptimporter' # my custom importer( code below )
Sass::Plugin.options[:load_paths] ||= []
Sass::Plugin.options[:load_paths] << Sass::Importers::Eptimporter.new("dummy")
puts Sass::Plugin.options[:load_paths]
puts Sass.compile_file("sass/sass.scss") # scss file (code below)
这是我的导入程序:
module Sass
module Importers
class Eptimporter < Base
attr_accessor :root
def initialize(root)
@root = root
end
# @see Base#find_relative
def find_relative(name, base, options)
nil
end
# @see Base#find
def find(name, options)
options[:syntax] = ":scss"
options[:filename] = name
options[:importer] = self
Sass::Engine.new("p { color :blue; }", options)
end
# @see Base#mtime
def mtime(name, options)
Time.now
end
# @see Base#key
def key(name, options)
[self.class.name , name]
end
# @see Base#to_s
def to_s
@root
end
end
end
end
最后我的scss文件:
@import "dummy.scss";
p {
color: red;
span { text-transform: uppercase; }
}
无论导入字符串是什么,自定义导入器只返回静态CSS代码p { color :blue; }
。我收到File to import not found or unreadable: dummy.scss. (Sass::SyntaxError)
错误。什么可能导致此错误?
答案 0 :(得分:0)
您确定您的进口商正在注册吗? 尝试注册如下: Sass.load_paths&lt;&lt;萨斯::进口商:: Eptimporter.new( '虚设')
您可能还会在选项[:syntax]中发现问题。它应该是:scss而不是“:scss”
答案 1 :(得分:0)
使用哈希将选项传递给compile_file。
load_paths = Sass::Plugin.options[:load_paths] || []
load_paths << Sass::Importers::Eptimporter.new("dummy")
Sass.compile_file("sass/sass.scss", {:load_paths => load_paths})
或
Sass.compile_file("sass/sass.scss", {:importer => Sass::Importers::Eptimporter.new("dummy")})