Итак, у меня есть структура каталогов app/assets/stylesheets/
, которая выглядит примерно так:
|-dialogs
|-mixins
|---buttons
|---gradients
|---vendor_support
|---widgets
|-pages
|-structure
|-ui_elements
В каждом каталоге есть несколько партиций sass (обычно *.css.scss, но один или два *.css.scss.erb).
Я могу предположить много, но рельсы СЛЕДУЕТ автоматически компилировать все файлы в этих каталогах из-за *= require_tree .
в application.css, правильно?
Недавно я попытался реструктурировать эти файлы, удалив все цветовые переменные и разместив их в файле в корневой папке app/assets/stylesheets
(_colors.css.scss). Затем я создал файл в корневой папке app/assets/stylesheets
с именем master.css.scss, которая выглядит так:
// Color Palette
@import "colors";
// Mixins
@import "mixins/buttons/standard_button";
@import "mixins/gradients/table_header_fade";
@import "mixins/vendor_support/rounded_corners";
@import "mixins/vendor_support/rounded_corners_top";
@import "mixins/vendor_support/box_shadow";
@import "mixins/vendor_support/opacity";
Я действительно не понимаю, как рельсы обрабатывают порядок компиляции активов, но это явно не в мою пользу. Кажется, ни один из файлов не знает, что у них есть какие-либо переменные или импортируемые микшины, и поэтому он выдает ошибки, и я не могу их скомпилировать.
Undefined variable: "$dialog_divider_color".
(in /home/blah/app/assets/stylesheets/dialogs/dialog.css.scss.erb)
Undefined mixin 'rounded_corners'.
(in /home/blah/app/assets/stylesheets/widgets.css.scss)
Переменная $dialog_divider_color
четко определена в _colors.css.scss, а _master.css.scss
импортирует цвета и все мои миксины. Но, видимо, рельсы не получили эту записку.
Есть ли способ исправить эти ошибки, или мне нужно прибегнуть к тому, чтобы все мои определения переменных возвращались в каждый отдельный файл, а также все импорт mixin?
К сожалению, этот парень, похоже, не считает возможным, но я надеюсь, что он ошибается. Любые мысли приветствуются.