Лучшая ошибка конвейера активов Rails или трассировка стека - PullRequest
6 голосов
/ 31 января 2012

Просто обновил приложение с rails 3.0.9 до 3.2.1, и когда я запускаю bundle exec rake assets:precompile, я получаю ошибки, что нормально, однако обратная трассировка не говорит мне, где в моих файлах css или scss возникает проблема с синтаксисом от. Я попытался выполнить поиск "0ee5c0e69c92af0", но эта строка не появилась в моем проекте.

bundle exec rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets --trace
** Invoke assets:precompile:all (first_time)
** Execute assets:precompile:all
** Invoke assets:precompile:primary (first_time)
** Invoke assets:environment (first_time)
** Execute assets:environment
** Invoke tmp:cache:clear (first_time)
** Execute tmp:cache:clear
** Execute assets:precompile:primary
rake aborted!
Invalid CSS after "...0ee5c0e69c92af0": expected ";", was ".png;"

Есть ли способ получить лучшее сообщение об ошибке или трассировку стека из процесса предварительной компиляции? Есть ли другой способ компилировать мои css.erb файлы для проверки синтаксиса без этой задачи?

Ответы [ 3 ]

2 голосов
/ 31 января 2012

Нет лучшего способа, о котором я знаю, потому что это сообщение генерируется Sprockets (на самом деле процессором CSS) после того, как оно объединит все файлы вместе.

Одна вещь, которую вы могли бы сделать (временно), это заменить массив прекомпиляции по умолчанию в application.rb следующим:

config.assets.precompile = ['*.css']

Затем удалите все требования из вашего application.css и запустите задачу прекомпиляции локально. Это скомпилирует каждый CSS-файл по отдельности и, надеюсь, даст вам больше подсказок о том, где проблема.

0 голосов
/ 15 июля 2013

Я получил ту же ошибку при обновлении до конвейера ресурсов, и здесь я был виновником. Когда вы добавляете конвейер ресурса, важно также переходить ваши таблицы стилей с использования url (этот указывает на файл без отпечатков / не кэшированный в конвейере ресурсов) на новый помощник image-url (этот указывает на отпечаток пальца). / кэшированный файл в конвейере ресурсов). См. Раздел 2.3 в документах .

конвейер перед активом (.sass):

#background
  background-image: url('Long Path 1920x1200.jpg')

Конвейер после актива (.sass):

#background
  background-image: image-url('Long Path 1920x1200.jpg')

К сожалению, новый помощник image-url не может обрабатывать пробелы в имени файла, в отличие от старого url. Так что, когда вы запустите bundle exec rake assets:precompile, это будет бум. Решение состоит в том, чтобы удалить пробелы.

Исправленный код:

#background
  background-image: image-url('long-path-1920x1200.jpg')
0 голосов
/ 01 февраля 2012

Конечно, передайте флаг --trace на рейк:

$ bundle exec rake --trace assets:precompile
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...