How to make Rails 3.1 use SASS (Over SCSS) as the default?

后端 未结 6 1569
无人及你
无人及你 2020-12-12 14:06

Having a hard time figuring out how to make SASS, not SCSS, as the default for stylesheets.

I\'ve tried making a sass_config.rb file with this:

相关标签:
6条回答
  • 2020-12-12 14:52

    Do require 'sass/plugin' and make sure it's at the bottom after your Application.initialize! call.

    0 讨论(0)
  • 2020-12-12 14:56

    For rails 3.1.rc4, you could set the config:

    config.sass.preferred_syntax = :sass
    

    in the application.rb file

    0 讨论(0)
  • 2020-12-12 14:58

    I definitely prefer sass to scss too - have you considered just using the compass gem for all your CSS, and adding preferred_syntax = :sass to config/compass.rb

    I haven't tested this out yet on rails 3.1 yet but it works in 3.0.7

    EDIT

    As a troubleshooting step, what happens when you remove just the first line of code from sass_config.rb so that it just has the second one? Do both these lines cause the error?

    0 讨论(0)
  • 2020-12-12 15:04

    I found this answer somewhere else, can't remember exactly, but put this in 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
    

    I also prefer SASS syntax (to SCSS). All you have to do is name files mystylesheet.css.sass instead and it just works. You can even rename your application.css to application.css.sass, change the comments at the top to // instead of /* */ and use the require_* directives—it all works, and then you can use SASS in your application global stylesheet. It won't if you use compass in app/stylesheets.

    Don't require the Sass::Plugin, it's totally separate to the new Rails asset engine which is based on Sprockets. It already knows how to compile SASS for you and manages the bundling of assets properly.

    I imagine a new Compass release will do this automatically for Rails 3.1+ projects using the asset pipeline.

    0 讨论(0)
  • 2020-12-12 15:06

    As @krainboltgreene commented, adding the following line to config/application.rb

    config.generators.stylesheet_engine = :sass
    

    makes sass the default format for stylesheet generators. However, since Rails 3.1.beta1 doesn't support it, one gets the following error messages

    $ 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
    

    As you see, one cannot change the default format without breaking the generators. Instead, you can manually create extra *.css.sass files, which are working fine with or without scss ones.

    0 讨论(0)
  • 2020-12-12 15:09

    I added the following to config/environments/development.rb:

    config.sass.preferred_syntax = :sass
    

    That did the trick.

    0 讨论(0)
提交回复
热议问题