В конвейере ресурсов Rails 3.1 изменения не вносятся в листы @ import'd - PullRequest
19 голосов
/ 13 августа 2011

Я использую @import частичные листы для организации моего 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 '(_layout.sass) и не будет регенерировать app.css, пока я не внесу изменения в сам файл app.css.sass. Это значительно замедляет мой рабочий процесс и означает, что мне нужно добавить / удалить пустые строки из app.css.sass, чтобы увидеть изменения. Никогда не было этой проблемы в 3.0.

Есть ли способ заставить sass-активы обновляться при каждом запросе сервера в процессе разработки?

Ответы [ 2 ]

29 голосов
/ 01 сентября 2011

Использование директивы depend_on может сделать то, что вам нужно.Это делает данный файл зависимостью от базового файла (поэтому базовый файл восстанавливается при изменении зависимости), но не включает его в комплект.

Например:

/*
*= depend_on _layout.sass
*= depend_on _constants.sass
*/
@import _layout.sass
@import _constants.sass

См. сообщение в блоге sass and sprockets , а также документацию звездочек (особенно в разделе директив).

2 голосов
/ 14 сентября 2011

Ответ от nanothief привел меня к решению (спасибо!), Но косвенным образом. Как только я наконец нашел время, чтобы вернуться сюда и посмотреть на пост, на который есть ссылки, он был обновлен, чтобы сказать, что исправление больше не нужно.

Конечно же, похоже, что эта ошибка была исправлена ​​в стабильной версии Rails 3.1.0 с sass-rails для 3.1.0. Настолько хорошо! Я подтвердил, что обновление драгоценных камней возвращает все к правильной работе, протестировано в нескольких приложениях.

...