如何让Rails 3.1使用SASS(Over SCSS)作为默认值?
很难搞清楚如何使SASS而不是SCSS作为样式表的默认值。
我试过用这个做一个sass_config.rb
文件:
Sass::Plugin.options[:syntax] = :sass Sass::Plugin.options[:style] = :compressed
我也尝试添加到environment.rb文件。 无论哪种方式,我得到这个错误:
.../config/environment.rb:7:in `<top (required)>': uninitialized constant Sass::Plugin (NameError)
对于rails 3.1.rc4,你可以设置config:
config.sass.preferred_syntax = :sass
在application.rb
文件中
我将以下内容添加到config/environments/development.rb
:
config.sass.preferred_syntax = :sass
那就是诀窍。
确实require 'sass/plugin'
,并确保它在Application.initialize!
后面的底部Application.initialize!
呼叫。
我绝对更喜欢sass scss – 你有没有考虑过使用指南针gem来处理所有的CSS,并且把preferred_syntax = :sass
添加到config / compass.rb
我还没有在rails 3.1上testing过,但它在3.0.7中工作
编辑
作为一个故障排除步骤,当你从sass_config.rb中只删除第一行代码时,会发生什么? 这两行是否会导致错误?
作为@krainboltgreene评论,添加以下行config/application.rb
config.generators.stylesheet_engine = :sass
使sass
成为样式表生成器的默认格式。 但是,由于Rails 3.1.beta1不支持它,人们会得到以下错误信息
$ rails g scaffold user name:string ... Could not find "scaffold.css.sass" in any of your source paths. Your current source paths are: .../gems/railties-3.1.0.beta1/lib/rails/generators/rails/scaffold/templates ... $ rails g controller users ... Could not find "stylesheet.css.sass" in any of your source paths. Your current source paths are: .../gems/railties-3.1.0.beta1/lib/rails/generators/rails/assets/templates
如你所见,在不破坏生成器的情况下,不能改变默认的格式。 相反,您可以手动创build额外的* .css.sass文件,这些文件可以正常使用或不使用scss。
我发现这个答案的其他地方,不能记得确切,但把这个在config/initializers/sass.rb
:
Sass::Engine::DEFAULT_OPTIONS[:load_paths].tap do |load_paths| load_paths << "#{Rails.root}/app/assets/stylesheets" load_paths << "#{Gem.loaded_specs['compass'].full_gem_path}/frameworks/compass/stylesheets" end
我也喜欢SASS语法(对SCSS)。 你只需要命名文件mystylesheet.css.sass
就可以了。 你甚至可以把你的application.css
重命名为application.css.sass
,将顶部的注释改成//
而不是/* */
并使用require_*
指令 – 这一切都可以工作,然后你可以在应用程序中使用SASS全局样式表。 如果您在app/stylesheets
使用指南针,则不会。
不要求Sass::Plugin
,它完全独立于基于Sprockets的新Rails资产引擎。 它已经知道如何为你编译SASS并正确pipe理资产捆绑。
我想象一个新的Compass版本将自动为Rails 3.1+项目使用资产pipe道来做到这一点。