Comment faire Rails 3.1 utiliser SASS (Over SCSS) comme défaut?

Avoir du mal à comprendre comment faire SASS, et non SCSS, par défaut pour les feuilles de style.

J’ai essayé de créer un fichier sass_config.rb avec ceci:

 Sass::Plugin.options[:syntax] = :sass Sass::Plugin.options[:style] = :compressed 

J’ai aussi essayé d’append cela au fichier environment.rb. De toute façon je reçois cette erreur:

 .../config/environment.rb:7:in `': uninitialized constant Sass::Plugin (NameError) 

Pour les rails 3.1.rc4, vous pouvez définir la configuration:

 config.sass.preferred_syntax = :sass 

dans le fichier application.rb

J’ai ajouté ce qui suit à config/environments/development.rb :

 config.sass.preferred_syntax = :sass 

Cela a fait l’affaire.

Ne require 'sass/plugin' et assurez-vous qu’il est en bas après votre Application.initialize! appel.

Je préfère définitivement sass à scss aussi – avez-vous pensé à utiliser la boussole pour tous vos CSS, et à append preferred_syntax = :sass à config / compass.rb

Je ne l’ai pas encore testé sur les rails 3.1 mais cela fonctionne dans la version 3.0.7

MODIFIER

En tant qu’étape de dépannage, que se passe-t-il lorsque vous supprimez uniquement la première ligne de code de sass_config.rb afin qu’elle contienne le second? Ces deux lignes causent-elles l’erreur?

Comme @krainboltgreene a commenté, en ajoutant la ligne suivante à config/application.rb

 config.generators.stylesheet_engine = :sass 

fait de sass le format par défaut pour les générateurs de feuilles de style. Cependant, puisque Rails 3.1.beta1 ne le prend pas en charge, les messages d’erreur suivants sont affichés.

 $ rails g scaffold user name:ssortingng ... 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 

Comme vous le voyez, on ne peut pas changer le format par défaut sans casser les générateurs. Au lieu de cela, vous pouvez créer manuellement des fichiers supplémentaires * .css.sass, qui fonctionnent correctement avec ou sans les sss.

J’ai trouvé cette réponse ailleurs, je ne me souviens plus exactement, mais mets ça dans 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 

Je préfère aussi la syntaxe SASS (à SCSS). Tout ce que vous avez à faire est de nommer les fichiers mystylesheet.css.sass place et cela fonctionne. Vous pouvez même renommer votre application.css en application.css.sass , changer les commentaires en haut à // au lieu de /* */ et utiliser les directives require_* - tout fonctionne, puis vous pouvez utiliser SASS dans votre application feuille de style globale. Ce ne sera pas le cas si vous utilisez la boussole dans l' app/stylesheets .

Ne nécessite pas le Sass::Plugin , il est totalement séparé du nouveau moteur de ressources Rails basé sur les Sprockets. Il sait déjà comment comstackr SASS pour vous et gère le regroupement des actifs correctement.

J'imagine qu'une nouvelle version de Compass le fera automatiquement pour les projets Rails 3.1+ utilisant le pipeline d'actifs.