我正在使用以下代码片段手动编译带有一些变量覆盖的sass清单。Rails-如何在手动sass编译中传递Sprockets :: Context
template = File.read("#{Rails.root}/app/assets/schemes/#{scheme}/css/styles.css.scss")
scheme_variables.each do |key, value|
template << "$#{key}:#{value};\n"
end
engine = Sass::Engine.new(template, {
:syntax => :scss,
:cache => false,
:read_cache => false,
:style => :compressed,
:filesystem_importer => Sass::Rails::SassImporter,
:load_paths => MyApp::Application.assets.paths,
:sprockets => {
:context => ?,
:environment => MyApp::Application.assets
}
})
output = engine.render
Sass :: Engine构造函数需要选项哈希中的链轮上下文和环境。我在上下文中放置了什么?我想的第一件事是...
:context => MyApp::Application.assets.context_class,
...但是这给了我下面的错误“未定义的方法`font_path”为#”,当它击中我的青菜资产的助手之一。
我试过的第二件事是...
:context => ActionController::Base.helpers,
...这固定的资产助手的问题,但引发以下错误“未定义的方法`depend_on”为#”,当它试图通过工作我的glob导入(例如@import“mixins/*”)。
我使用Rails 4.2和sass-rails 5.0.3。
任何意见,将不胜感激。谢谢!
我想在[我的问题](http://stackoverflow.com/questions/30676993/dynamically-render-a-sass-file-through-sprockets)做同样的事情 - 你弄清楚如何要做到这一点,而不创建一个tmp文件? – elstgav