Sass 使用字符串输入编译Compass

Sass 使用字符串输入编译Compass,sass,compass-sass,Sass,Compass Sass,我正在使用JRuby使用compass编译sass css 我知道如何使用compass编译scss文件: compiler = Compass::Compiler.new( # Compass working directory '.', # Input directory 'styles/scss', # Output directory

我正在使用JRuby使用compass编译sass css

我知道如何使用compass编译scss文件:

compiler = Compass::Compiler.new(
             # Compass working directory
             '.',
             # Input directory
             'styles/scss',
             # Output directory
             'styles/css',
             # Compass options
             { :style => :scss}
           )        
compiler.compile('test.scss','test.css')
但我想编译一些compass源代码,这些源代码保存在字符串中,而不是文件中 我一直在钻研Compass::Compiler源代码,但我没有看到任何编译scss字符串而不是文件的方法

注意: 直接使用SASS编译器而不是compass,我可以编译scss字符串

engine = Sass::Engine.new(source,:syntax => :scss)
result = engine.render

在深入研究Compass::Compiler ruby类型之后,我发现它以一种简单的方式委托给Sass::Engine:

编译函数类似于:

def compile(sass_filename, css_filename)
    ...
    engine(sass_filename, css_filename).render
    ...
end
正在调用引擎功能:

def engine(sass_filename, css_filename)
    ...
    Sass::Engine.new(open(sass_filename).read, opts)
    ...
end
因此,要使用compass编译字符串,方法与使用原始Sass编译相同:

Sass::Engine.new(scssString,{:syntax => :scss,
                             :compass => {:css_dir => 'stylesheets',:js_dir => 'javascripts',:images_dir => 'images'}})
result = engine.render