Как сделать Rails 3.1 использовать SASS (над SCSS) по умолчанию?


трудно понять, как сделать SASS, а не SCSS, как по умолчанию для таблиц стилей.

Я пробовал делать sass_config.rb файл с этого:

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

Я также попытался добавить это в окружающую среду.rb файл. В любом случае я получаю эту ошибку:

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

6 ответов:

для рельсов 3.1.rc4, вы можете установить конфигурацию:

config.sass.preferred_syntax = :sass

на application.rb file

я добавил следующее в config/environments/development.rb:

config.sass.preferred_syntax = :sass

это сделало трюк.

Do require 'sass/plugin' и убедитесь, что он в самом низу после Application.initialize! звонок.

Я определенно предпочитаю sass scss тоже-вы рассматривали только использование компас для всех ваших CSS и добавляем preferred_syntax = :sass в config/компас.РБ

Я еще не тестировал это на rails 3.1, но он работает в 3.0.7

EDIT

как шаг устранения неполадок, что происходит, когда вы удаляете только первую строку кода из sass_config.rb так что у него просто есть второй? Обе эти строки вызывают ошибку?

как прокомментировал @krainboltgreene, добавив следующую строку в config/application.rb

config.generators.stylesheet_engine = :sass

делает sass формат по умолчанию для генераторов стилей. Однако, с рельсов 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

как вы видите, нельзя изменить формат по умолчанию, не нарушая генераторов. Вместо этого вы можете вручную создать дополнительный *.стиль 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, он полностью отделен от нового двигателя Rails asset, который основан на звездочках. Он уже знает, как скомпилировать SASS для вас и правильно управляет связыванием активов.

Я предполагаю, что новый выпуск Compass сделает это автоматически для проектов Rails 3.1+ с использованием конвейера активов.