2008-09-17 10 views
19

Если вы используете HAML и SASS в своем приложении Rails, то любые шаблоны, которые вы определяете в public/stylesheet/*. Sass, будут скомпилированы в * .css таблицы стилей. Из вашего кода вы используете stylesheet_link_tag, чтобы вытащить актив по имени, не беспокоясь о расширении.Каков наилучший метод хранения CSS-кода, созданного SASS, в вашем приложении и контроле источника?

Многим людям не нравится хранить сгенерированный код или скомпилированный код в управлении версиями, а также разумно, что public/directory не должен содержать элементы, которые вы не отправляете в браузер.

Каков наилучший образец при планировании ресурсов SASS в проекте Rails?

ответ

11

Я всегда версия все таблицы стилей в «общественное/стилей/Sass/* Сасс.» И создать исключающий фильтр для скомпилированных из них:

/public/stylesheets/*.css 
0

Если я могу управлять им, мне нравится хранить все мои стили в шаблонах SASS, когда я выбираю HAML/SASS для проекта, и я удалю application.css и scaffold.css. Затем я поместил SASS в public/stylesheets/sass и добавлю /public/stylesheets/*.css в .gitignore.

Если мне нужно работать с комбинацией активов SASS и CSS, это немного сложнее. Самый простой способ справиться с этим - иметь подкаталог вывода для сгенерированного CSS в каталоге stylesheets, а затем исключить этот подкаталог в .gitignore. Затем в ваших представлениях вы должны знать, какой тип стиля вы используете (SASS или CSS), в силу необходимости выбирать таблицу стилей public/stylesheets/foo или таблицу стилей public/stylesheets/sass-out/foo.

Если вам нужно пройти второй маршрут, создайте помощника, чтобы абстрагироваться от подкаталога sass-out.

6

Честно говоря, мне нравится иметь мои скомпилированные таблицы стилей Sass в системе управления версиями , Они небольшие, только изменения, когда ваши файлы .sass меняются, а их развертывание с остальной частью вашего приложения означает, что компилятор SASS никогда не должен запускаться в процессе производства.

Другое преимущество (хотя и небольшое) заключается в том, что если вы не используете кеширование страниц, для вашего процесса рельсов не требуется доступ на запись в ваш каталог public_html. Таким образом, есть еще один способ использования вашего сервера, который может быть злым.

5

Немного связано, но это хорошая идея для восстановления вашего CSS во время развертывания вашего capistrano. Этот обратный вызов крюк делает только что:

after "deploy:update_code" do 
    rails_env = fetch(:rails_env, "production") 
    run "#{release_path}/script/runner -e #{rails_env} 'Sass::Plugin.update_stylesheets'" 
end 

Update: Это больше не должно быть необходимости, с современными версиями Haml/Sass.

13

Рамка compass рекомендует размещать ваши таблицы стилей sass под таблицами приложений/таблиц стилей и скомпилированные css в общедоступном/stylesheets/compiled.

Вы можете настроить это, добавив следующий код в environment.rb:

Sass::Plugin.options[:template_location] = { 
    "#{RAILS_ROOT}/app/stylesheets" => "#{RAILS_ROOT}/public/stylesheets/compiled" 
} 

Если вы используете рамки компаса, он устанавливает эту конфигурацию для вас, когда вы установите его.