почему rails пытается предварительно скомпилировать файл .css - PullRequest
3 голосов
/ 03 декабря 2011

Я использую Rails 3.1, и в моих ресурсах / таблицах стилей у меня есть куча файлов .css и .scss.

Похоже, Rails пытается предварительно скомпилировать файлы .css, и они всплывают со следующим сообщением:

Invalid CSS after "...{padding-bottom": expected "{", was ";0;}#order_deta..."

Если у меня есть только файлы .css и если я закомментирую гем sass-rails из Gemfile, то все работает.

group :assets do
  #gem 'sass-rails',   '~> 3.1.4'
  gem 'coffee-rails', '~> 3.1.1'
  gem 'uglifier', '>= 1.0.3'
end

Итак, теперь вопрос в том, нужно ли мне конвертировать все мои файлы .css в .scss, чтобы хорошо играть с предварительной компиляцией ресурсов, или есть обходной путь?

Обновление:

Вот мой код:

config.assets.paths << "#{Rails.root}/app/themes/vanilla/assets/stylesheets"
config.assets.paths << "#{Rails.root}/app/themes/vanilla/assets/javascripts"
config.assets.paths << "#{Rails.root}/app/themes/vanilla/assets/images"
config.assets.precompile += ['vanilla.css', 'vanilla.js']

vanilla.css выглядит так:

/*
 * This is a manifest file that'll automatically include all the stylesheets available in this directory
 * and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
 * the top of the compiled file, but it's generally better to create a new file per style scope.
 *
 *= require 'reset'
 *= require 'vroom'
 *= require_self
*/

Здесь сброс - это reset.css, а vroom - vroom.css.scss

Это ошибка, которую я получаю:

Invalid CSS after "...{padding-bottom": expected "{", was ";0;}#order_deta..."
(in .........../stylesheets/vanilla.css)

Эта ошибка возникает из-за того, что Rails пытается предварительно скомпилировать reset.css.

Если я удалю самоцвет sass-rails и все файлы .scss, то получу ресурсы rake: прекомпиляция работает.

Ответы [ 2 ]

4 голосов
/ 03 декабря 2011

Вам не нужно конвертировать ваши файлы. Здесь происходит то, что процессор SCSS проверяет синтаксис ваших файлов CSS, даже если они не обрабатываются как SCSS.

Внимательно посмотрите на строку, на которую жалуются. Кажется, ошибка говорит о том, что у вас есть точка с запятой (;) между атрибутом и значением вместо двоеточия (:)

Возможно это:

{padding-bottom;0;}

вместо этого:

{padding-bottom:0;}

Удаляя гем, вы удаляете проверку синтаксиса, поэтому файл будет скомпилирован как есть.

1 голос
/ 12 августа 2012

У меня была такая же проблема, и я нашел решение!

В моем случае у меня была эта строка:

@import "bootstrap"

Все, что мне нужно было сделать, это добавить точку с запятой

@import "bootstrap";

Маленькая, но смертельная ошибка!

...