Конвейер активов Rails 3.1 не подбирает изменения в листах @import'd
Я использую @import
'd частичные листы для организации моего css/sass:
/app
/assets
/stylesheets
_constants.sass
_layout.sass
...
app.css.sass
app.css.sass:
@import _constants.sass
// basic styles
@import _layout.sass
@import ...
app.css.sass
имеет правило @import
для _layout.sass
, что позволяет мне делиться миксинами и переменными среди необработанных sass файлов, прежде чем они будут выполнены в app.css
Проблема заключается в том, что Rails не распознает изменения в @import
'd partials (_layout.sass
) и не будет регенерировать app.css
до тех пор, пока я не сделаю изменение непосредственно в самом файле app.css.sass
. Это резко замедляет мой рабочий процесс и означает, что я должен добавлять/удалять пустые строки из app.css.sass
, чтобы увидеть изменения. Никогда не было этой проблемы в версии 3.0.
Есть ли способ заставить sass-ресурсы восстанавливаться при каждом запросе сервера в разработке?
Ответы
Ответ 1
Использование директивы depend_on
может делать то, что вам нужно. Это делает данный файл зависимым от базового файла (поэтому базовый файл восстанавливается при изменении зависимостей), но не включает его в комплект.
Например:
/*
*= depend_on _layout.sass
*= depend_on _constants.sass
*/
@import _layout.sass
@import _constants.sass
Смотрите это сообщение сообщения о блоге sass и sprockets, а также документацию на звездочки (особенно раздел директив).
Ответ 2
Ответ от nanothief привел меня к решению (спасибо!), но косвенно. Как только я, наконец, нашел время, чтобы вернуться сюда и посмотреть ссылку, указанную в ссылке, она была обновлена, чтобы сказать, что исправление больше не нужно.
Конечно, кажется, что эта ошибка была исправлена в Rails 3.1.0, стабильной с sass-rails для 3.1.0. Так хорошо! Я подтвердил, что обновление драгоценных камней действительно возвращает все к правильной работе, проверено в нескольких приложениях.