如何让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道来做到这一点。