web-dev-qa-db-fra.com

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

Ayant du mal à comprendre comment faire du SASS, pas du SCSS, par défaut pour les feuilles de style.

J'ai essayé de faire un sass_config.rb fichier avec ceci:

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

J'ai également essayé d'ajouter cela au fichier environment.rb. Quoi qu'il en soit, j'obtiens cette erreur:

.../config/environment.rb:7:in `<top (required)>': 
  uninitialized constant Sass::Plugin (NameError)
59
krainboltgreene

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

config.sass.preferred_syntax = :sass

dans le application.rb fichier

74
Kevin

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

config.sass.preferred_syntax = :sass

Cela a fait l'affaire.

8
remino

Faire require 'sass/plugin' et assurez-vous qu'il se trouve en bas après votre Application.initialize! appel.

7
aceofspades

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

config.generators.stylesheet_engine = :sass

fait de sass le format par défaut des générateurs de feuilles de style. Cependant, puisque Rails 3.1.beta1 ne le prend pas en charge, on obtient les messages d'erreur suivants

$ 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

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 * .css.sass supplémentaires, qui fonctionnent correctement avec ou sans ceux scss.

2
Andrei

Je préfère définitivement sass à scss aussi - avez-vous envisagé d'utiliser simplement boussole gem pour tous vos CSS, et d'ajouter preferred_syntax = :sass à config/compass.rb

Je n'ai pas encore testé cela sur Rails 3.1 pour le moment mais cela fonctionne dans 3.0.7

ÉDITER

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 ne contienne que la seconde? Ces deux lignes provoquent-elles l'erreur?

2
stephenmurdoch

J'ai trouvé cette réponse ailleurs, je ne me souviens pas exactement, mais mettez-la 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 également la syntaxe SASS (à SCSS). Tout ce que vous avez à faire est de nommer les fichiers mystylesheet.css.sass à la place et ça marche. Vous pouvez même renommer votre application.css à application.css.sass, changez les commentaires en haut en // au lieu de /* */ et utilisez le require_* directives - tout fonctionne, et vous pouvez ensuite utiliser SASS dans la feuille de style globale de votre application. Ce ne sera pas le cas si vous utilisez la boussole dans app/stylesheets.

Ne nécessite pas le Sass::Plugin, il est totalement distinct du nouveau moteur d'actifs Rails qui est basé sur Sprockets. Il sait déjà comment compiler SASS pour vous et gère correctement le regroupement des actifs.

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

1
sj26