ruby-on-rails – Rails – 如何在手动sass编译中传递Sprockets
发布时间:2020-12-17 03:41:59 所属栏目:百科 来源:网络整理
导读:我正在使用以下代码片段手动编译sass清单并附加了一些变量覆盖. template = File.read("#{Rails.root}/app/assets/schemes/#{scheme}/css/styles.css.scss")scheme_variables.each do |key,value| template "$#{key}:#{value};n"endengine = Sass::Engine.n
我正在使用以下代码片段手动编译sass清单并附加了一些变量覆盖.
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构造函数需要选项哈希中的sprockets上下文和环境.我对上下文有什么看法?我尝试的第一件事就是…… :context => MyApp::Application.assets.context_class, …但是当它碰到我的一个sass资产助手时,它给了我以下错误“未定义的方法`font_path’for#”. 我尝试的第二件事是…… :context => ActionController::Base.helpers, …修复了资产助手问题,但是当它试图通过我的glob导入(例如@import“mixins / *”)时,会抛出以下错误“未定义的方法`depend_on’为#”. 我正在使用Rails 4.2和sass-rails 5.0.3. 对此有任何建议将非常感激.谢谢! 解决方法
使用Sass :: Rails :: ScssTemplate,您可以使用以下代码段呈现您的sass代码:
template = '...' # Your sass code logical_path = pathname = '' environment = Rails.application.assets context = environment.context_class.new(environment,logical_path,pathname) template = Sass::Rails::ScssTemplate.new(pathname) { template } output = template.render(context,{}) 如果要从文件呈现,则只需将其路径添加到pathname,将其资源路径添加到logical_path. 对我来说,它适用于Rails 4.2.5.1和sass-rails 5.0.4. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |