Каков наилучший метод для хранения сгенерированного SASS CSS в вашем приложении и управлении исходным кодом? - PullRequest
20 голосов
/ 17 сентября 2008

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

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

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

Ответы [ 5 ]

13 голосов
/ 27 ноября 2008

Фреймворк compass рекомендует поместить ваши sass-таблицы стилей в app / stylesheets, а ваши скомпилированные css - в public / stylesheets / compiled.

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

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

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

11 голосов
/ 17 сентября 2008

Я всегда проверяю все таблицы стилей в "public / stylesheets / sass / *. Sass" и настраиваю фильтр исключения для скомпилированных:

/public/stylesheets/*.css
6 голосов
/ 19 сентября 2008

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

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

5 голосов
/ 20 сентября 2008

В некотором роде, но это хорошая идея, чтобы восстановить ваш 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.

0 голосов
/ 17 сентября 2008

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

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

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

...