Jak sprawić, by Rails 3.1 używał Sass (Over SCSS) jako domyślnego?

Trudno jest wymyślić, jak zmienić SASS, a nie SCSS, jako domyślny arkusz stylów.

Próbowałem zrobić sass_config.rb Plik z tym:

Sass::Plugin.options[:syntax] = :sass
Sass::Plugin.options[:style] = :compressed
Próbowałem też dodać to do środowiska.plik rb. Tak czy siak dostaję ten błąd:
.../config/environment.rb:7:in `<top (required)>': 
  uninitialized constant Sass::Plugin (NameError)
Author: krainboltgreene, 2011-05-15

6 answers

Dla rails 3.1.rc4, można ustawić config:

config.sass.preferred_syntax = :sass

W pliku application.rb

 74
Author: Kevin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-11 15:29:56

Dodałem do config/environments/development.rb:

config.sass.preferred_syntax = :sass
Udało się.
 8
Author: remino,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-10 01:56:16

Zrób require 'sass/plugin' i upewnij się, że jest na dole po twoim Application.initialize! telefonie.

 7
Author: aceofspades,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-15 05:51:30

Zdecydowanie wolę też sass od scss - czy rozważałeś użycie gem compass dla wszystkich swoich CSS i dodanie preferred_syntax = :sass do config/compass.rb

Nie testowałem jeszcze tego na rails 3.1, ale działa w 3.0.7

EDIT

Jako krok rozwiązywania problemów, co się stanie, gdy usuniesz tylko pierwszą linię kodu z sass_config.rb tak, że ma tylko drugi? Czy obie te linie powodują błąd?

 2
Author: stephenmurdoch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-15 04:09:16

Jak skomentował @krainboltgreene, dodając następujący wiersz do config/application.rb

config.generators.stylesheet_engine = :sass

Sprawia, że sass jest domyślnym formatem dla generatorów arkuszy stylów. Jednak od Rails 3.1.beta1 nie obsługuje tego, jeden dostaje następujące komunikaty o błędach

$ 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

Jak widzisz, nie można zmienić domyślnego formatu bez przerwania generatorów. Zamiast tego możesz ręcznie utworzyć dodatkowe*.css.pliki sass, które działają dobrze z lub bez scss.

 2
Author: Andrei,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-21 22:47:02

Znalazłem tę odpowiedź gdzieś indziej, nie pamiętam dokładnie, ale Wstaw to 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

Preferuję również składnię SASS (do SCSS). Wszystko co musisz zrobić, to nazwać Pliki mystylesheet.css.sass i to po prostu działa. Możesz nawet zmienić nazwę application.css na application.css.sass, zmienić komentarze u góry na // zamiast /* */ i użyć dyrektyw require_*-to wszystko działa, a następnie możesz użyć SASS w globalnym arkuszu stylów aplikacji. Nie będzie, jeśli użyjesz kompasu w app/stylesheets.

Nie wymagaj Sass::Plugin, jest całkowicie oddzielny od nowego silnika rails asset, który jest oparty na zębatkach. Wie już, jak skompilować SASS i prawidłowo zarządza pakietem zasobów.

Wyobrażam sobie, że nowe wydanie Compass zrobi to automatycznie dla projektów Rails 3.1 + przy użyciu potoku zasobów.

 1
Author: sj26,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-07 01:06:36