Конвейер активов 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. Так хорошо! Я подтвердил, что обновление драгоценных камней действительно возвращает все к правильной работе, проверено в нескольких приложениях.