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





Если я могу управлять этим, мне нравится хранить все свои стили в шаблонах SASS, когда я выбираю HAML / SASS для проекта и удаляю application.css и scaffold.css. Затем я помещу SASS в public / stylesheets / sass и добавлю /public/stylesheets/*.css в .gitignore.
Если мне приходится работать с комбинацией ресурсов на основе SASS и CSS, это немного сложнее. Самый простой способ справиться с этим - создать подкаталог вывода для сгенерированного CSS в каталоге таблиц стилей, а затем исключить этот подкаталог в .gitignore. Затем в ваших представлениях вы должны знать, какой тип стиля вы используете (SASS или CSS), потому что вам нужно выбрать таблицу стилей public / stylesheets / foo или таблицу стилей public / stylesheets / sass-out / foo.
Если вам нужно пойти вторым путем, создайте помощник, чтобы абстрагироваться от подкаталога sass-out.
Я всегда проверяю все таблицы стилей в "public / stylesheets / sass / *. Sass" и устанавливаю фильтр исключения для скомпилированных:
/public/stylesheets/*.css
Честно говоря, мне нравится иметь мои скомпилированные таблицы стилей SASS в системе контроля версий. Они небольшие, меняются только при изменении ваших файлов .sass, а их развертывание вместе с остальной частью вашего приложения означает, что компилятору SASS никогда не нужно запускаться в производственной среде.
Другое преимущество (хотя и небольшое) заключается в том, что если вы не используете кеширование страниц, вашему процессу rails не нужен доступ для записи в ваш каталог public_html. Так что есть еще один способ, которым эксплойт вашего сервера может быть злом.
В некоторой степени связано, но это хорошая идея - регенерировать ваш 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
Обновлять: это больше не нужно для современных версий Haml / Sass.
Фреймворк компас рекомендует помещать ваши таблицы стилей sass в app / stylesheets, а ваш скомпилированный css - в public / stylesheets / compiled.
Вы можете настроить это, добавив следующий код в свой environment.rb:
Sass::Plugin.options[:template_location] = {
"#{RAILS_ROOT}/app/stylesheets" => "#{RAILS_ROOT}/public/stylesheets/compiled"
}
Если вы используете платформу компаса, она настраивает эту конфигурацию для вас при ее установке.